diff --git a/programs/emulator/PrMK/trunk/LOAD_LIB.MAC b/programs/emulator/PrMK/trunk/LOAD_LIB.MAC new file mode 100644 index 0000000000..5bbb6af65d --- /dev/null +++ b/programs/emulator/PrMK/trunk/LOAD_LIB.MAC @@ -0,0 +1,254 @@ +;14.04.2009 - a macros for code load library the box_lib.obj from '/sys/lib/' or current dirrectory. +; The macros for load any library/libraries: +; Copyright (c) 2009, +; All rights reserved. +; +; Redistribution and use in source and binary forms, with or without +; modification, are permitted provided that the following conditions are met: +; * Redistributions of source code must retain the above copyright +; notice, this list of conditions and the following disclaimer. +; * Redistributions in binary form must reproduce the above copyright +; notice, this list of conditions and the following disclaimer in the +; documentation and/or other materials provided with the distribution. +; * Neither the name of the nor the +; names of its contributors may be used to endorse or promote products +; derived from this software without specific prior written permission. +; +; THIS SOFTWARE IS PROVIDED BY Alexey Teplov aka ''AS IS'' AND ANY +; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +; DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +;***************************************************************************** +; This macros based on source code: +; - Alexey Teplov / └ыхъёхщ ╥хяыют +; Mario79, Mario - Marat Zakiyanov / ╠рЁрЄ ╟ръш эют +; Diamondz - Evgeny Grechnikov / ┼тухэшщ ├Ёхўэшъют +;------------------------ +; DESCRIPTION +; Macro load_library +; Logick of work. +; A first time we must to check system path, where I belive find a system library. System path is "/sys/lib/". +; If I cannot found my library, i must to check second way. Second way is current dirrectory. +; If we cannot load library, we must show the error message: +; "I'm sorry,the programm cannot found system library box_lib.obj." +; "The find was make on 2 ways: /sys/lib/ and current dirrectory." +; +; ebx,library_name +; esi,cur_dir_path +; edi,library_path +;--------------------------------------------------------------------- +; Macro test_load_library +; A first time we must to check own path in current dirrectory the program, where I belive find a system library. +; If I cannot found my library, i must to check second way. Second way is system path a "/sys/lib/". +; If we cannot load library, we must show the error message: +; "I'm sorry,the programm cannot found system library box_lib.obj." +; "The find was make on 2 ways: /sys/lib/ and current dirrectory." + +macro load_library library_name, cur_dir_path, library_path, system_path, err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i +{ +local end_steep +;--------------------------------------------------------------------- +; loading Box_Lib library + + mcall 68,19,system_path ; load of sys directory + test eax,eax + jnz end_steep + + mov ebx,library_name + mov esi,cur_dir_path + mov edi,library_path + + copy_path ;the macros making way /current pach a program/+ name system library + + mcall 68,19,library_path ; load of alternative + test eax,eax + jnz end_steep + + show_error_window err_message_found_lib, head_f_l ;show error message /create window + +end_steep: + + import_boxlib myimport, err_message_import, head_f_i ;import +;--------------------------------------------------------------------- +} + + +macro test_load_library library_name, cur_dir_path, library_path, system_path, err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i +{ +local end_steep +;--------------------------------------------------------------------- +; loading Box_Lib library + mov ebx,library_name + mov esi,cur_dir_path + mov edi,library_path + + copy_path ;the macros making way /current pach a program/+ name system library + + mcall 68,19,library_path ; load of alternative + test eax,eax + jnz end_steep + + mcall 68,19,system_path ; load of sys directory + test eax,eax + jnz end_steep + + show_error_window err_message_found_lib, head_f_l ;show error message /create window + +end_steep: + + import_boxlib myimport, err_message_import, head_f_i ;import +;--------------------------------------------------------------------- +} + +macro load_libraries library_name, cur_dir_path, library_path, system_path, err_message_found_lib, head_f_l, myimport, err_message_import, head_f_i +{ +local end_steep +;--------------------------------------------------------------------- +; loading Box_Lib library + + mcall 68,19,system_path ; load of sys directory + test eax,eax + jnz end_steep + + mov ebx,library_name + mov esi,cur_dir_path + mov edi,library_path + + copy_path ;the macros making way /current pach a program/+ name system library + + mcall 68,19,library_path ; load of alternative + test eax,eax + jnz end_steep + + show_error_window err_message_found_lib, head_f_l ;show error message /create window + +end_steep: + + import_boxlib myimport, err_message_import, head_f_i ;import +;--------------------------------------------------------------------- +} + + + + +macro copy_path +{ +local copy_path +;--------------------------------------------------------------------- +; mov ebx,library_name +; mov esi,cur_dir_path +; mov edi,library_path + +copy_path: + xor eax,eax + cld +.lp1: + lodsb + stosb + test eax,eax + jnz .lp1 + mov esi,edi + + std +.lp2: + lodsb + cmp al,'/' + jnz .lp2 + mov edi,esi + mov esi,ebx + add edi,2 + + + cld +.lp3: + lodsb + stosb + test eax,eax + jnz .lp3 +;--------------------------------------------------------------------- +} + +macro show_error_window err_message, head +{ +local red_win +local still +local button + + mcall 40,0x5 ;set mask on events rewraw window and get id button. +red_win: +;draw_window: + mcall 12, 1 + mcall 0, <0,300>, <0,100>, 0x33AABBCC, 0x805080D0, head + mcall 4, <10,10>, 0x90000000, err_message; _found_lib + mcall 12, 2 +align 4 +still: ;main loop + mcall 10 ;wait event + dec eax + jz red_win + + sub eax,2 + jnz still ;go to main loop +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +button: + mcall 17 ;get id button + test ah,ah ;if in ah 0, then go to still + jz still + mcall -1 +} + +macro import_boxlib myimport, err_message_import, head_f_i +{ +local import_loop +local import_find +local lp +local import_find_next +local import_found +local import_done +local exit +; initialize import + mov edx, eax + mov esi,myimport +import_loop: + lodsd + test eax, eax + jz import_done + push edx +import_find: + mov ebx, [ds:edx] + test ebx, ebx + jz exit ;import_not_found + push eax +lp: + mov cl, [ds:eax] + cmp cl, [ds:ebx] + jnz import_find_next + test cl, cl + jz import_found + inc eax + inc ebx + jmp lp +import_find_next: + pop eax + add edx, 8 + jmp import_find +import_found: + pop eax + mov eax, [ds:edx+4] + mov [esi-4], eax + pop edx + jmp import_loop +exit: + add esp,4 + + show_error_window err_message_import, head_f_i ;show error message /create window + +import_done: +;--------------------------------------------------------------------- +} \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/MASMFpuLib.asm b/programs/emulator/PrMK/trunk/MASMFpuLib.asm new file mode 100644 index 0000000000..9f88aa8b31 --- /dev/null +++ b/programs/emulator/PrMK/trunk/MASMFpuLib.asm @@ -0,0 +1,789 @@ +;FpuAtoFL PROTO :DWORD,:DWORD,:DWORD +;FpuFLtoA PROTO :DWORD,:DWORD,:DWORD,:DWORD + +;FpuAdd PROTO :DWORD,:DWORD,:DWORD,:DWORD +;FpuSub PROTO :DWORD,:DWORD,:DWORD,:DWORD +;FpuMul PROTO :DWORD,:DWORD,:DWORD,:DWORD +;FpuDiv PROTO :DWORD,:DWORD,:DWORD,:DWORD +;FpuSqrt PROTO :DWORD,:DWORD,:DWORD +;FpuXexpY PROTO :DWORD,:DWORD,:DWORD,:DWORD +;FpuAbs PROTO :DWORD,:DWORD,:DWORD +;FpuTrunc PROTO :DWORD,:DWORD,:DWORD +;FpuRound PROTO :DWORD,:DWORD,:DWORD +;FpuChs PROTO :DWORD,:DWORD,:DWORD + +;FpuLnx PROTO :DWORD,:DWORD,:DWORD +;FpuLogx PROTO :DWORD,:DWORD,:DWORD +;FpuEexpX PROTO :DWORD,:DWORD,:DWORD +;FpuTexpX PROTO :DWORD,:DWORD,:DWORD + +;FpuSin PROTO :DWORD,:DWORD,:DWORD +;FpuCos PROTO :DWORD,:DWORD,:DWORD +;FpuTan PROTO :DWORD,:DWORD,:DWORD +;FpuArcsin PROTO :DWORD,:DWORD,:DWORD +;FpuArccos PROTO :DWORD,:DWORD,:DWORD +;FpuArctan PROTO :DWORD,:DWORD,:DWORD + +;FpuSinh PROTO :DWORD,:DWORD,:DWORD +;FpuCosh PROTO :DWORD,:DWORD,:DWORD +;FpuTanh PROTO :DWORD,:DWORD,:DWORD +;FpuArcsinh PROTO :DWORD,:DWORD,:DWORD +;FpuArccosh PROTO :DWORD,:DWORD,:DWORD +;FpuArctanh PROTO :DWORD,:DWORD,:DWORD + +;FpuSize PROTO :DWORD,:DWORD,:DWORD +;FpuComp PROTO :DWORD,:DWORD,:DWORD +;FpuExam PROTO :DWORD,:DWORD +;FpuState PROTO :DWORD + +SRC1_FPU EQU 1 +SRC1_REAL EQU 2 +SRC1_DMEM EQU 4 +SRC1_DIMM EQU 8 +SRC1_CONST EQU 16 + +ANG_DEG EQU 0 +ANG_RAD EQU 32 + +DEST_MEM EQU 0 +DEST_IMEM EQU 64 +DEST_FPU EQU 128 + +SRC2_FPU EQU 256 +SRC2_REAL EQU 512 +SRC2_DMEM EQU 1024 +SRC2_DIMM EQU 2048 +SRC2_CONST EQU 4096 + +STR_REG EQU 0 +STR_SCI EQU 32768 + +FPU_PI EQU 1 +FPU_NAPIER EQU 2 + +XAM_VALID EQU 1 +XAM_ZERO EQU 2 +XAM_NEG EQU 4 +XAM_SMALL EQU 8 +XAM_INFINIT EQU 16 + +CMP_EQU EQU 1 +CMP_GREATER EQU 2 +CMP_LOWER EQU 4 + + + + +; ######################################################################### +; +; FpuFLtoA +; +;########################################################################## + + ; ----------------------------------------------------------------------- + ; This procedure was written by Raymond Filiatreault, December 2002 + ; and modified April 2003. A minor flaw was corrected in July 2003. + ; Modified March 2004 to avoid any potential data loss from the FPU + ; + ; This FpuFLtoA function converts an 80-bit REAL number (Src) to its + ; decimal representation as a zero terminated alphanumeric string which + ; is returned at the specified memory destination unless an invalid + ; operation is reported by the FPU or the definition of the parameters + ; (with uID) is invalid. + ; + ; The format of the string can be specified as regular (default) or + ; scientific notation. The number of decimal places returned must also be + ; specified but the total number of significant digits must not exceed 16. + ; When the regular format is specified, the integer portion can also be + ; padded with preceding spaces to position the decimal point at a + ; specified location from the start of the string. + ; + ; The source can be an 80-bit REAL number from the FPU itself or from + ; memory. + ; + ; The source is not checked for validity. This is the programmer's + ; responsibility. + ; + ; This procedure is based on using an FPU instruction to convert the + ; REAL number into a specific packed decimal format. After unpacking, + ; the decimal point is positioned as required. + ; + ; Only EAX is used to return error or success. All other CPU registers + ; are preserved. All FPU registers are preserved. + ; + ; ----------------------------------------------------------------------- + + +; ######################################################################### +align 4 +proc FpuFLtoA stdcall, lpSrc:DWORD, lpDecimal:DWORD, lpDest:DWORD, uID:DWORD + +locals + tempdw dd ? + esize dd ? + Padding dd ? + Decimal dd ? + content: times 108 db ? + tempst dt ? + bcdstr dt ? + oldcw dw ? + truncw dw ? + unpacked: times 20 db ? +endl + +;get the specified number of decimals for result +;and make corrections if necessary + + mov eax,[lpDecimal] + test [uID],SRC2_DMEM + jz @F + mov eax,[eax] ;get the decimals from memory + @@: + push eax + movzx eax,al ;low byte - number of decimal digits + cmp eax,15 + jbe @F + mov eax,15 ;a maximum of 15 decimals is allowed + @@: + mov [Decimal],eax + pop eax + movzx eax,ah ;2nd byte - number of char before decimal point + cmp eax,17 + jbe @F + mov eax,17 ;a maximum of 17 characters is allowed + @@: + mov [Padding],eax + + test [uID],SRC1_FPU ;is data taken from FPU? + jz @F ;continue if not + +;------------------------------- +;check if top register is empty +;------------------------------- + + fxam ;examine its content + fstsw ax ;store results in AX + fwait ;for precaution + sahf ;transfer result bits to CPU flag + jnc @F ;not empty if Carry flag not set + jpe @F ;not empty if Parity flag set + jz srcerr1 ;empty if Zero flag set + + @@: + fsave [content] + +;---------------------------------------- +;check source for Src and load it to FPU +;---------------------------------------- + + test [uID],SRC1_FPU + jz @F + lea eax,[content] + fld tbyte [eax+28] + jmp dest0 + + @@: + test [uID],SRC1_REAL ;is Src an 80-bit REAL in memory? + jz srcerr ;no proper source identificaiton + mov eax,[lpSrc] + fld tbyte [eax] + jmp dest0 ;go complete process + +srcerr: + frstor [content] +srcerr1: + push edi + mov edi,[lpDest] + mov eax,"ERRO";ORRE" + stosd + mov ax,"R" + stosw + pop edi + xor eax,eax + ret + +dest0: + +;------------------------------------------- +;first examine the value on FPU for validity +;------------------------------------------- + + fxam ;examine value on FPU + fstsw ax ;get result + fwait + sahf ;transfer to CPU flags + jz maybezero + jpo srcerr ;C3=0 and C2=0 would be NAN or unsupported + jnc getnumsize ;continue if normal finite number + +;-------------------------------- +;value to be converted = INFINITY +;-------------------------------- + + push ecx + push esi + push edi + mov edi,[lpDest] + mov al,"+" + test ah,2 ;C1 field = sign + jz @F + mov al,"-" + @@: + stosb + mov eax,"INFI";IFNI" + stosd + mov eax,"NITY";YTIN" + stosd + jmp finish + +;------------------------- +;value to be converted = 0 +;------------------------- + +maybezero: + jpe getnumsize ;would be denormalized number + fstp st0 ;flush that 0 value off the FPU + push ecx + push esi + push edi + mov edi,[lpDest] + test [uID],STR_SCI ;scientific notation? + jnz @F ;no padding + mov ecx,[Padding] + sub ecx,2 + jle @F ;no padding specified or necessary + mov al," " + rep stosb + @@: + mov ax,3020h ;" 0" szstring + stosw ;write it + jmp finish + +;--------------------------- +; get the size of the number +;--------------------------- + +getnumsize: + fldlg2 ;log10(2) + fld st1 ;copy Src + fabs ;insures a positive value + fyl2x ;->[log2(Src)]*[log10(2)] = log10(Src) + + fstcw [oldcw] ;get current control word + fwait + mov ax,[oldcw] + or ax,0c00h ;code it for truncating + mov [truncw],ax + fldcw [truncw] ;insure rounding code of FPU to truncating + + fist [esize] ;store characteristic of logarithm + fldcw [oldcw] ;load back the former control word + + ftst ;test logarithm for its sign + fstsw ax ;get result + fwait + sahf ;transfer to CPU flags + sbb [esize],0 ;decrement esize if log is negative + fstp st0 ;get rid of the logarithm + +;----------------------------------------------------------------------- +; get the power of 10 required to generate an integer with the specified +; number of significant digits +;----------------------------------------------------------------------- + + mov eax,[uID] + and eax,STR_SCI + jnz .els0 ;regular decimal notation + mov eax,[esize] + or eax,eax ;check if number is < 1 + js @F +; .if eax > 15 ;if number is >= 10^16 + cmp eax,15 + jbe .endif0 + or [uID],STR_SCI ;switch to scientific notation + mov [Decimal],15 ;insures 15 decimal places in result + jmp scific + .endif0: + add eax,[Decimal] +; .if eax > 15 ;if integer + decimal digits > 16 + cmp eax,15 + jbe .endif1 + sub eax,15 + sub [Decimal],eax ;reduce decimal digits as required + .endif1: + @@: + push [Decimal] + pop [tempdw] + jmp @f + .els0: ;scientific notation + scific: + mov eax,[Decimal] + sub eax,[esize] + mov [tempdw],eax +; .endif + @@: + +;---------------------------------------------------------------------------------------- +; multiply the number by the power of 10 to generate required integer and store it as BCD +;---------------------------------------------------------------------------------------- + +;.if tempdw != 0 + cmp [tempdw],0 + je @f + fild [tempdw] + fldl2t + fmulp st1,st0 ;->log2(10)*exponent + fld st0 + frndint ;get the characteristic of the log + fxch + fsub st,st1 ;get only the fractional part but keep the characteristic + f2xm1 ;->2^(fractional part)-1 + fld1 + faddp st1,st0 ;add 1 back + fscale ;re-adjust the exponent part of the REAL number + fstp st1 ;get rid of the characteristic of the log + fmulp st1,st0 ;->16-digit integer +;.endif + @@: + + fbstp [bcdstr] ;->TBYTE containing the packed digits + fstsw ax ;retrieve exception flags from FPU + fwait + shr eax,1 ;test for invalid operation + jc srcerr ;clean-up and return error + +;------------------------------------------------------------------------------ +; unpack BCD, the 10 bytes returned by the FPU being in the little-endian style +;------------------------------------------------------------------------------ + + push ecx + push esi + push edi + lea esi,[bcdstr+9] ;go to the most significant byte (sign byte) + lea edi,[unpacked] + mov eax,3020h + mov cl,byte [esi] ;sign byte +; .if cl == 80h + cmp cl,0x80 + jne @f + mov al,"-" ;insert sign if negative number +; .endif + @@: + stosw + mov ecx,9 + @@: + dec esi + movzx eax,byte [esi] + ror ax,4 + ror ah,4 + add ax,3030h + stosw + dec ecx + jnz @B + + mov edi,[lpDest] + lea esi,[unpacked] + test [uID],STR_SCI ;scientific notation? + jnz scientific + +;************************ +; REGULAR STRING NOTATION +;************************ + +;------------------------------ +; check if padding is specified +;------------------------------ + + mov ecx,[Padding] + or ecx,ecx ;check if padding is specified + jz nopadding + + mov edx,2 ;at least 1 integer + sign + mov eax,[esize] + or eax,eax + js @F ;only 1 integer digit if size is < 1 + add edx,eax ;->number of integer digits + @@: + sub ecx,edx + jle nopadding + mov al," " + rep stosb + +nopadding: + pushfd ;save padding flags + movsb ;insert sign + mov ecx,1 ;at least 1 integer digit + mov eax,[esize] + or eax,eax ;is size negative (i.e. number smaller than 1) + js @F + add ecx,eax + @@: + mov eax,[Decimal] + add eax,ecx ;->total number of digits to be displayed + sub eax,19 + sub esi,eax ;address of 1st digit to be displayed + pop eax ;retrieve padding flags in EAX +; .if byte ptr[esi-1] == "1" + cmp byte [esi-1],"1" + jne @f + dec esi + inc ecx + push eax ;transfer padding flags through stack + popfd ;retrieve padding flags + jle @F ;no padding was necessary + dec edi ;adjust for one less padding byte +; .endif + @@: + @@: + rep movsb ;copy required integer digits + mov ecx,[Decimal] + or ecx,ecx + jz @F + mov al,"." + stosb + rep movsb ;copy required decimal digits + @@: + jmp finish + +;******************** +; SCIENTIFIC NOTATION +;******************** + +scientific: + movsb ;insert sign + mov ecx,[Decimal] + mov eax,18 + sub eax,ecx + add esi,eax + cmp byte [esi-1],"1" + pushfd ;save flags for extra "1" + jnz @F + dec esi + @@: + movsb ;copy the integer + mov al,"." + stosb + rep movsb ;copy the decimal digits + + mov al,"E" + stosb + mov al,"+" + mov ecx,[esize] + popfd ;retrieve flags for extra "1" + jnz @F ;no extra "1" + inc ecx ;adjust exponent + @@: + or ecx,ecx + jns @F + mov al,"-" + neg ecx ;make number positive + @@: + stosb ;insert proper sign + +;Note: the absolute value of the size could not exceed 4931 + + mov eax,ecx + mov cl,100 + div cl ;->thousands & hundreds in AL, tens & units in AH + push eax + and eax,0ffh ;keep only the thousands & hundreds + mov cl,10 + div cl ;->thousands in AL, hundreds in AH + add ax,3030h ;convert to characters + stosw ;insert them + pop eax + shr eax,8 ;get the tens & units in AL + div cl ;tens in AL, units in AH + add ax,3030h ;convert to characters + stosw ;insert them + +finish: + xor eax,eax + stosb ;string terminating 0 + pop edi + pop esi + pop ecx + + frstor [content] + + or al,1 ;to insure EAX!=0 + ret + +endp + +; ######################################################################### + + + align 4 + +; ######################################################################### +; FpuCos +;########################################################################## + ; + ; cos(Src) -> Dest +FpuCos: + test [flags],(1 shl 30) + jz @f ;jump if angle already in radians + fldpi ;load pi (3.14159...) on FPU + fmulp + test [flags],(1 shl 31) + jnz .1 + pushd 200 + jmp .2 +.1: pushd 180 +.2: fidiv dword [esp] ;value now in radians + fwait + add esp,4 ;clean the stack +@@: fldpi + fadd st,st ;->2pi + fxch + +@@: fprem ;reduce the angle + fcos + fstsw ax ;retrieve exception flags from FPU + fwait + shr al,1 ;test for invalid operation + sahf ;transfer to the CPU flags + jpe @B ;reduce angle again if necessary + fstp st1 ;get rid of the 2pi +ret + + align 4 +; ######################################################################### +; FpuSin +;########################################################################## + ; + ; sin(Src) -> Dest +FpuSin: + test [flags],(1 shl 30) + jz @f ;jump if angle already in radians + fldpi ;load pi (3.14159...) on FPU + fmulp + test [flags],(1 shl 31) + jnz .1 + pushd 200 + jmp .2 +.1: pushd 180 +.2: fidiv dword [esp] ;value now in radians + fwait + add esp,4 ;clean the stack + @@: + fldpi + fadd st,st ;->2pi + fxch + + fprem ;reduce the angle + fsin + fstp st1 ;get rid of the 2pi +ret + + align 4 +; ######################################################################### +; FpuArctan +;########################################################################## + ; + ; atan(Src) -> Dest +FpuArctan: + fld1 + fpatan + test [flags],(1 shl 30) + jz @F ;jump if angle is required in radians + test [flags],(1 shl 31) + jnz .1 + pushd 200 + jmp .2 +.1: pushd 180 +.2: fimul dword [esp] ;*180 degrees + fldpi ;load pi (3.14159...) on FPU + fdivp ;*180/pi, angle now in degrees + add esp,4 ;clean CPU stack + + ftst ;check for negative angle + fstsw ax ;retrieve status word from FPU + fwait + sahf + jnc @F ;jump if positive number + test [flags],(1 shl 31) + jnz .3 + pushd 400 + jmp .4 +.3: pushd 360 +.4: fiadd dword [esp] ;angle now 0-360 + fwait + add esp,4 ;clean CPU stack + +@@: + ret + + align 4 +; ######################################################################### +; FpuTan +;########################################################################## + + ; a = tan(x) +FpuTan: + fldpi ;load pi (3.14159...) on FPU + fadd st,st ;->2pi + fxch + test [flags],(1 shl 30) + jz @F ;jump if angle already in radians + test [flags],(1 shl 31) + jnz .1 + pushd 400 + jmp .2 +.1: pushd 360 +.2: fmul st,st1 + fidiv dword [esp] ;value now in radians + pop eax ;clean the stack +@@: fprem ;reduce the angle + fptan + + fstp st ;get rid of the 1 + fstp st1 ;get rid of the 2pi +ret + + align 4 +; ######################################################################### +; FpuArccos +;########################################################################## + ; sqrt(1-Src^2) + ; acos(Src) = atan ------------- -> Dest + ; Src + +FpuArccos: + fld st ;copy cosine value + fmul st0,st1 ;cos^2 + fld1 + fsubrp ;1-cos^2 = sin^2 + fsqrt ;->sin + fxch + fpatan ;i.e. arctan(sin/cos) + + test [flags],(1 shl 30) + jz @F ;jump if angle is required in radians + test [flags],(1 shl 31) + jnz .1 + pushd 200 + jmp .2 +.1: pushd 180 +.2: fimul dword [esp] ;*180 degrees + fldpi ;load pi (3.14159...) on FPU + fdivp ;*180/pi, angle now in degrees + pop eax ;clean CPU stack +@@: +ret + + align 4 +; ######################################################################### +; FpuArcsin +;########################################################################## + ; Src + ; asin(Src) = atan ------------- -> Dest + ; sqrt(1-Src^2) +FpuArcsin: + fld st0 ;copy sine value + fmul st0,st0 ;sin^2 + fld1 + fsubrp ;1-sin^2 = cos^2 + fsqrt ;->cos + fpatan ;i.e. arctan(sin/cos) = arcsin + test [flags],(1 shl 30) + jz @F ;jump if angle is required in radians + test [flags],(1 shl 31) + jnz .1 + pushd 200 + jmp .2 +.1: pushd 180 +.2: fimul dword [esp] ;*180 degrees + fldpi ;load pi (3.14159...) on FPU + fdivrp ;*180/pi, angle now in degrees + add esp,4 ;clean CPU stack +@@: + ret + + align 4 +; ######################################################################### +; FpuEexpX +;########################################################################## + + ; e^(Src) = antilog2[ log2(e) * Src ] -> Dest + +FpuEexpX: + + fldl2e ;->log2(e) + fmulp ;->log2(e)*Src + + fld st0 ;copy the logarithm + frndint ;keep only the characteristic + fsub st1,st ;keeps only the mantissa + fxch ;get the mantissa on top + + f2xm1 ;->2^(mantissa)-1 + fld1 + faddp ;add 1 back + + fscale ;scale it with the characteristic + + fstp st1 ;get rid of the characteristic +ret + + align 4 +; ######################################################################### +; FpuXexpY +;########################################################################## + + ; Src1^Src2 = antilog2[ log2(Src1) * Src2 ] -> Dest + +FpuXexpY: + fxch ;set up FPU registers for next operation + fyl2x ;->log2(Src1)*exponent + + fld st0 ;copy the logarithm + frndint ;keep only the characteristic + fsub st1,st ;keeps only the mantissa + fxch ;get the mantissa on top + + f2xm1 ;->2^(mantissa)-1 + fld1 + faddp ;add 1 back + + fscale ;scale it with the characteristic + + fstp st1 ;overwrite the characteristic +ret + + +if 0 +exp: +.N equ 10 + xor eax,eax + mov ecx,.N + fld1 +.0: dec ecx + jz .end + mov eax,.N + sub eax,ecx + mov [.d],eax + fild [.d] +@@: dec eax + jz @f + mov [.d],eax + fild [.d] + fmulp + jmp @b +@@: mov eax,.N + sub eax,ecx + fld st2 +@@: dec eax + jz @f + fld st3 + fmulp + jmp @b +@@: fdivrp + faddp + jmp .0 +.end: fxch + fstp st0 +ret +.d dd 0 +endf \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/MK_b3-34_hand.bmp b/programs/emulator/PrMK/trunk/MK_b3-34_hand.bmp new file mode 100644 index 0000000000..d5a65bcf06 Binary files /dev/null and b/programs/emulator/PrMK/trunk/MK_b3-34_hand.bmp differ diff --git a/programs/emulator/PrMK/trunk/PrMK.asm b/programs/emulator/PrMK/trunk/PrMK.asm new file mode 100644 index 0000000000..03bdbf4fe8 --- /dev/null +++ b/programs/emulator/PrMK/trunk/PrMK.asm @@ -0,0 +1,1838 @@ +; 15/III 2010 staper@inbox.ru + +appname equ 'Программируемый микрокалькулятор ' +version equ '' + +include 'macros.inc' + +header '01',1,START,I_END,(D_END+0x100),(D_END+0x100),0,cur_dir_path + +include 'opcodes.inc' +include 'proc32.inc' +include 'MASMFpuLib.asm' +include 'editbox_ex.mac' +include 'load_lib.mac' +include 'macroPRMK.inc' + +_flags = 0x0 +;0 1 - исполнение программы +;1 1 - аварийный останов, не используется +;2- +;3 1 - нажата F +;4 1 - нажата K +;5 1 - режим программирования +;6 1 - заполнение экспоненты +;7 1 - регистры подняты +;8 1 - дополнение команды (0х4?,0х6? и пр.) +;9 1 - дозапись команды (адрес перехода после ОПКОДа) +;10 1 - необходимо обнулить экранную строку, но не показывать её, поднять регистры +;11 1 - нажата П +;12 1 - нажата ИП +;13 1 - скрывать регистры и программу +;25-27 - используются в диалоге сохранениея/загрузки +;28- +;29 - "sk" в key +;30 0 - трансцендентые функции представлены в радианах, иначе 31 +;31 0/1 - трансцендентые функции представлены в градах/градусах + +START: + load_library boxlib_name,cur_dir_path,buf_cmd_lin,system_path,\ + err_message_found_lib,head_f_l,myimport,err_message_import,head_f_i + + mcall 40,0x7 + mcall 48,4 + mov [scin_height],eax + +;определяем длину строки с параметрами + mov esi,buf_cmd_lin + xor ecx,ecx +@@: cmp byte [esi+ecx],0 + je @f + inc ecx + jmp @b +@@: mov dword [edit2.size],ecx + mov dword [edit2.pos],ecx + + mcall 68,11 + cmp dword [edit2.pos],0 + je @f + call load_prog +@@: + +red: + call draw_window +still: + test [flags],(1 shl 0) + jnz main_loop + mcall 10 +.0: dec eax + jz red + dec eax + jz key + dec eax + jz button + sub eax,3 + jz mouse + jmp still +main_loop: + mcall 11 + test eax,eax + jnz still.0 + cmp [schk],-1 + jne @f + btr [flags],0 + mcall 55,55,,,sound_data + jmp still +@@: movzx esi,[schk] + movzx eax, byte [esi+PMEM] + shl eax,2 + add eax,OPCODEtable + call dword [eax] + call draw_schk + call draw_prog + test [flags],(1 shl 0) + jz @f + mcall 5,[_pause] + jmp still +@@: mcall 55,55,,,sound_data + jmp still + +mouse: if 0 + push dword scroll_bar_data_vertical + call [scrollbar_ver_mouse] + endf + jmp still + +button: + mcall 17 + dec ah + jnz @f + mcall -1 +@@: cmp ah,31 + jae .grd + movzx eax,ah + cmp eax,30 + jg still + shl eax,2 + call dword [eax+but_table-4] + test [flags],(1 shl 5) + jz @f + call ftos + call draw_string + call draw_prog +@@: call draw_schk + jmp still +.grd: cmp ah,31 + jne @f + btr [flags],30 + call set_but + jmp still +@@: cmp ah,32 + jne @f + bts [flags],30 + btr [flags],31 + call set_but + jmp still +@@: cmp ah,33 + jne @f + bts [flags],30 + bts [flags],31 + call set_but +@@: cmp ah,34 + jne @f + btc [flags],13 + jc .331 + mcall 67,-1,-1,198,-1 + jmp still + .331: + mcall 67,-1,-1,485,-1 +@@: jmp still + +key: + mcall 2 +@@: cmp ah,12 ;load + jne @f + bt [flags],27 + jc still + bt [flags],26 + jc still + bts [flags],25 + call window_load_save + jmp still +@@: cmp ah,19 ;save + jne @f + bt [flags],27 + jc still + bt [flags],26 + jc still + btr [flags],25 + call window_load_save + jmp still + +@@: push dword edit1 + call [edit_box_key] + +.0: call draw_schk + + cmp [edit1.pos],2 + jb still + test [flags],(1 shl 29) + jnz @f + cmp word [txt.edbox],"sk"; or "BP" or "Bp" or "bP" + jne @f + bts [flags],29 + mov word [txt.edbox],0x2020 + mov [edit1.size],0 + mov [edit1.pos],0 + push dword edit1 + call [edit_box_draw] + jmp key.0 +@@: mov ah,[txt.edbox] + sub ah,48 + cmp ah,9 + jbe .1 + sub ah,7 + cmp ah,15 + jbe .1 + sub ah,32 +.1: mov al,[txt.edbox+1] + sub al,48 + cmp al,9 + jbe .2 + sub al,7 + cmp al,15 + jbe .1 + sub al,32 +.2: shl al,4 + shr ax,4 + mov [edit1.size],0 + mov [edit1.pos],0 + test [flags],(1 shl 29) + jnz .4 + movzx ebx,[schk] + add ebx,PMEM + mov [ebx],al + inc [schk] + jmp .3 +.4: mov [schk],al + btr [flags],29 +.3: call draw_schk + mov word [txt.edbox],0x2020 + push dword edit1 + call [edit_box_draw] + call draw_prog + test [flags],(1 shl 5) + jz @f + call ftos + call draw_string +@@: jmp key.0 + + + align 4 + +but_table: + +dd .Cx, .vp, .sign, .dot, .0 +dd .up, .xy, _3_, _2_, _1_ +dd .min, .div, _6_, _5_, _4_ +dd .plus, .x, _9_, _8_, _7_ +dd .PP, .BP, .p, .ip, .K +dd .Sp, .Vo, .shgl, .shgr, .F + +.BP: test [flags],(1 shl 5) + jnz @f + bts [flags],9 + ret + @@: movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + test [flags],(1 shl 4) + jz .BP0 + mov [dop8],0x80 + bts [flags],8 + btr [flags],4 + ret + .BP0: mov byte [eax],0x51 + bts [flags],9 + ret + @@: mov byte [eax],0x58 + bts [flags],9 + btr [flags],3 + ret +.shgl: test [flags],(1 shl 5) + jnz @f + ret + @@: test [flags],(1 shl 3) + jnz @f + test [flags],(1 shl 4) + jz .shgl0 + mov [dop8],0xE0 + bts [flags],8 + btr [flags],4 + ret + .shgl0: + dec [schk] + ret + @@: movzx eax,[schk] + add eax,PMEM + inc [schk] + mov byte [eax],0x5E + bts [flags],9 + btr [flags],3 + ret + +.shgr: test [flags],(1 shl 5) + jnz @f + ret + @@: test [flags],(1 shl 3) + jnz @f + test [flags],(1 shl 4) + jz .shgr0 + mov [dop8],0xC0 + bts [flags],8 + btr [flags],4 + ret + .shgr0: + inc [schk] + ret + @@: movzx eax,[schk] + add eax,PMEM + inc [schk] + mov byte [eax],0x5C + bts [flags],9 + btr [flags],3 + ret + +.PP: test [flags],(1 shl 5) + jnz .PPprg + mov eax,0x53 + jmp .to_opcode + .PPprg: + movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + test [flags],(1 shl 4) + jz .PP0 + mov [dop8],0xA0 + bts [flags],8 + btr [flags],4 + dec [schk] + ret + .PP0: + mov byte [eax],0x53 + bts [flags],9 + ret + @@: mov byte [eax],0x5A + bts [flags],9 + btr [flags],3 + ret +.Vo: test [flags],(1 shl 5) + jnz .Voprg + mov eax,0x52 + jmp .to_opcode + .Voprg: + movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + test [flags],(1 shl 4) + jz .Vo0 + mov [dop8],0x90 + bts [flags],8 + btr [flags],4 + dec [schk] + ret + .Vo0: + mov byte [eax],0x52 + ret + @@: mov byte [eax],0x59 + bts [flags],9 + btr [flags],3 + ret + +.Sp: test [flags],(1 shl 5) + jnz .Spprg + mov eax,0x50 + jmp .to_opcode + .Spprg: + movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + test [flags],(1 shl 4) + jz .Sp0 + mov [dop8],0x70 + bts [flags],8 + btr [flags],4 + dec [schk] + ret + .Sp0: + mov byte [eax],0x50 + ret + @@: mov byte [eax],0x57 + bts [flags],9 + btr [flags],3 + ret +.ip: test [flags],(1 shl 5) + jnz .ipprg + bts [flags],12 + ret + .ipprg: + test [flags],(1 shl 3) + jnz @f + test [flags],(1 shl 4) + jz .ip0 + mov [dop8],0xD0 + bts [flags],8 + btr [flags],4 + ret + .ip0: + mov [dop8],0x60 + bts [flags],8 + ret + @@: movzx eax,[schk] + add eax,PMEM + inc [schk] + mov byte [eax],0x5D + bts [flags],9 + btr [flags],3 + ret + + + +.p: test [flags],(1 shl 5) + jnz .pprg + bts [flags],11 +.nop: ret + .pprg: + test [flags],(1 shl 3) + jnz @f + test [flags],(1 shl 4) + jz .p0 + mov [dop8],0xB0 + bts [flags],8 + btr [flags],4 + ret + .p0: + mov [dop8],0x40 + bts [flags],8 + ret + @@: movzx eax,[schk] + add eax,PMEM + inc [schk] + mov byte [eax],0x5B + bts [flags],9 + btr [flags],3 + ret + + + +.F: bts [flags],3 + ret +.K: bts [flags],4 + ret +.Cx: test [flags],(1 shl 5) + jnz .Cxprg + test [flags],(1 shl 11) + jnz .cx4d + test [flags],(1 shl 12) + jnz .cx6d + test [flags],(1 shl 9) + jnz .Cx0 + mov eax,0x0D + jmp .to_opcode + .cx4d: mov eax,0x4d + jmp .to_opcode + .cx6d: mov eax,0x6d + jmp .to_opcode + .Cxprg: + test [flags],(1 shl 8) + jz .Cx0 + add [dop8],0x0D + jmp .dop8 + .Cx0: + test [flags],(1 shl 9) + jz .Cx1 + mov al,0x0D + jmp .dop9 + .Cx1: + movzx eax,[schk] + add eax,PMEM + mov byte [eax],0x0D + inc [schk] + ret +.vp: test [flags],(1 shl 3) + jnz .vpsetprg + test [flags],(1 shl 5) + jnz .vpprg + test [flags],(1 shl 11) + jnz .vp4c + test [flags],(1 shl 12) + jnz .vp6c + test [flags],(1 shl 9) + jnz .vp0 + mov eax,0x0C + jmp .to_opcode + .vp4c: mov eax,0x4c + jmp .to_opcode + .vp6c: mov eax,0x6c + jmp .to_opcode + .vpsetprg: + test [flags],(1 shl 5) + jz @f + ret + .vpprg: + test [flags],(1 shl 8) + jz .vp0 + add [dop8],0x0c + jmp .dop8 + .vp0: + test [flags],(1 shl 9) + jz .vp1 + mov al,0x0C + jmp .dop9 + .vp1: + movzx eax,[schk] + add eax,PMEM + mov byte [eax],0x0C + inc [schk] + ret + @@: bts [flags],5 + btr [flags],3 + ret +.sign: test [flags],(1 shl 5) + jnz .signprg + test [flags],(1 shl 11) + jnz .sign4b + test [flags],(1 shl 12) + jnz .sign6b + test [flags],(1 shl 9) + jnz .sign0 + mov eax,0x0B + jmp .to_opcode + .sign4b: mov eax,0x4b + jmp .to_opcode + .sign6b: mov eax,0x6b + jmp .to_opcode + .signprg: + test [flags],(1 shl 8) + jz .sign0 + add [dop8],0x0B + jmp .dop8 + .sign0: test [flags],(1 shl 9) + jz .sign1 + mov al,0x0B + jmp .dop9 + .sign1: test [flags],(1 shl 3) + jnz @f + movzx eax,[schk] + add eax,PMEM + mov byte [eax],0x0B + inc [schk] + ret + @@: btr [flags],5 + btr [flags],3 + fld qword [S.X] + call ftos + call draw_string + ret +.up: test [flags],(1 shl 5) + jnz .upprg + test [flags],(1 shl 3) + jnz .up0f + test [flags],(1 shl 4) + jnz .upK + test [flags],(1 shl 11) + jnz .up4e + test [flags],(1 shl 12) + jnz .up6e + test [flags],(1 shl 9) + jnz .up0 + mov eax,0x0E + jmp .to_opcode + .up0f: mov eax,0x0F + jmp .to_opcode + .up4e: mov eax,0x4e + jmp .to_opcode + .up6e: mov eax,0x6e + jmp .to_opcode + .upprg: + test [flags],(1 shl 8) + jz .up0 + add [dop8],0x0E + jmp .dop8 + .up0: test [flags],(1 shl 9) + jz .up1 + mov al,0x0E + jmp .dop9 + .up1: movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + mov byte [eax],0x0E + ret + @@: mov byte [eax],0x0F + btr [flags],3 + ret + .upK: mov eax,0x3B + jmp .to_opcode + +.xy: test [flags],(1 shl 5) + jnz .xyprg + test [flags],(1 shl 3) + jnz .xy24 + mov eax,0x14 + jmp .to_opcode + .xy24: mov eax,0x24 + jmp .to_opcode + .xyprg: + movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + mov byte [eax],0x14 + ret + @@: mov byte [eax],0x24 + btr [flags],3 + ret +.min: test [flags],(1 shl 5) + jnz .minprg + test [flags],(1 shl 3) + jnz .min21 + test [flags],(1 shl 9) + jnz .min0 + mov eax,0x11 + jmp .to_opcode + .min21: mov eax,0x21 + jmp .to_opcode + .minprg: + test [flags],(1 shl 8) + jz .min0 + add [dop8],0x0F + jmp .dop8 + .min0: test [flags],(1 shl 9) + jz .min1 + mov al,0x0F + jmp .dop9 + .min1: movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + mov byte [eax],0x11 + ret + @@: mov byte [eax],0x21 + btr [flags],3 + ret +.div: test [flags],(1 shl 5) + jnz .divprg + test [flags],(1 shl 3) + jnz .div23 + mov eax,0x13 + jmp .to_opcode + .div23: mov eax,0x23 + jmp .to_opcode + .divprg: + movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + mov byte [eax],0x13 + ret + @@: mov byte [eax],0x23 + btr [flags],3 + ret +.plus: test [flags],(1 shl 5) + jnz .plusprg + test [flags],(1 shl 3) + jnz .plus10 + mov eax,0x10 + jmp .to_opcode + .plus10: mov eax,0x20 + jmp .to_opcode + .plusprg: + movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + mov byte [eax],0x10 + ret + @@: mov byte [eax],0x20 + btr [flags],3 + ret +.x: test [flags],(1 shl 5) + jnz .xprg + test [flags],(1 shl 3) + jnz .x22 + mov eax,0x12 + jmp .to_opcode + .x22: mov eax,0x22 + jmp .to_opcode + .xprg: + movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + mov byte [eax],0x12 + ret + @@: mov byte [eax],0x22 + btr [flags],3 + ret +.dot: test [flags],(1 shl 5) + jnz .dotprg + test [flags],(1 shl 3) + jnz .dot25 + test [flags],(1 shl 11) + jnz .dot4a + test [flags],(1 shl 12) + jnz .dot6a + test [flags],(1 shl 9) + jnz .dot0 + mov eax,0x0A + jmp .to_opcode + .dot25: mov eax,0x25 + jmp .to_opcode + .dot4a: mov eax,0x4a + jmp .to_opcode + .dot6a: mov eax,0x6a + jmp .to_opcode + .dotprg: + test [flags],(1 shl 8) + jz .dot0 + add [dop8],0x0A + jmp .dop8 + .dot0: test [flags],(1 shl 9) + jz .dot1 + mov al,0x0A + jmp .dop9 + .dot1: movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + mov byte [eax],0x0A + ret + @@: mov byte [eax],0x25 + btr [flags],3 + ret + +.0: test [flags],(1 shl 5) + jnz .0prg + test [flags],(1 shl 3) + jnz .015 + test [flags],(1 shl 11) + jnz .040 + test [flags],(1 shl 12) + jnz .060 + test [flags],(1 shl 9) + jnz .00 + mov eax,0 + jmp .to_opcode + .015: mov eax,0x15 + jmp .to_opcode + .040: mov eax,0x40 + jmp .to_opcode + .060: mov eax,0x60 + jmp .to_opcode + .0prg: + test [flags],(1 shl 8) + jz .00 + add [dop8],0x00 + jmp .dop8 + .00: test [flags],(1 shl 9) + jz .01 + mov al,0 + jmp .dop9 + .01: movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 4) + jz @f + mov ebx,0 + test [flags],(1 shl 8) + jnz .dop8 + test [flags],(1 shl 9) + jnz .dop9 + mov byte [eax],0x54 + bts [flags],4 + ret + @@: test [flags],(1 shl 3) + jnz @f + mov byte [eax],0x00 + ret + @@: mov byte [eax],0x15 + btr [flags],3 + ret + +.dop8: movzx eax,[schk] + add eax,PMEM + inc [schk] + mov bl,[dop8] + mov byte [eax],bl + btr [flags],8 + ret +.dop9: cmp [mov3],0 + jne @f + inc [mov3] + shl al,4 + mov [dop9],al + ret + @@: mov [mov3],0 + add al,[dop9] + test [flags],(1 shl 5) + jz @f + movzx ebx,[schk] + add ebx,PMEM + mov [ebx],al + inc [schk] + btr [flags],9 + ret + @@: mov [schk],al + btr [flags],9 + call draw_prog + ret + + align 4 +.to_opcode: + shl eax,2 + add eax,OPCODEtable + mov ebx,[eax] + jmp ebx + +dop8 db 0 +dop9 db 0 +mov3 db 0 + + +_1_: buttabnum 1,0x16,0x41,0x61,0 +_2_: buttabnum 2,0x17,0x42,0x62,0 +_3_: buttabnum 3,0x18,0x43,0x63,0 +_4_: buttabnum 4,0x19,0x44,0x64,0x31 +_5_: buttabnum 5,0x1A,0x45,0x65,0x32 +_6_: buttabnum 6,0x1B,0x46,0x66,0 +_7_: buttabnum 7,0x1C,0x47,0x67,0x34 +_8_: buttabnum 8,0x1D,0x48,0x68,0x35 +_9_: buttabnum 9,0x1E,0x49,0x69,0x36 + + + + + align 4 +stof: + mov esi,string + inc esi + cmp word [esi],0x2030 + je .null + mov dword [buf],0 + mov dword [buf+4],0 + mov word [buf+8],0 + xor ecx,ecx +@@: cmp byte [esi+ecx],'.' + je .dot + cmp byte [esi+ecx],0x20 + je .int + inc ecx + cmp ecx,8 + jne @b +.int: dec ecx + call .tobcd + fbld [buf] + jmp .tosign + +.dot: push ecx + dec ecx + call .tobcd + fbld [buf] + pop ecx + add esi,ecx + inc esi + mov ebx,ecx + dec ebx + xor ecx,ecx +@@: cmp byte [esi+ecx],0x20 + je @f + cmp ebx,8 + je @f + inc ecx + inc ebx + jmp @b +@@: cmp ecx,0 + je .tosign + push ecx + dec ecx + mov dword [buf],0 + mov dword [buf+4],0 + mov word [buf+8],0 + call .tobcd + fbld [buf] + pop ecx + mov [perem],10 +@@: fidiv [perem] + loop @b + faddp + jmp .tosign + + +.tobcd: + mov edi,buf +@@: mov al,[esi+ecx] + sub al,48 + test ecx,ecx + jz @f + shl al,4 + mov ah,[esi+ecx-1] + sub ah,48 + shr ax,4 + mov [edi],al + inc edi + dec ecx + jz .tobcd1 + dec ecx + jnz @b + mov al,[esi] + sub al,48 +@@: mov [edi],al +.tobcd1: +ret + + +.tosign: + cmp byte [string],'-' + jne @f + fchs +@@: cmp byte [string+12],0x20 + je .ret + cmp byte [string+12],0x30 + jne @f + cmp byte [string+11],0x30 + je .ret +@@: mov al,[string+12] + sub al,48 + mov ah,[string+11] + sub ah,48 + shl al,4 + shr ax,4 + mov [buf],al + mov dword [buf+1],0 + mov dword [buf+5],0 + fbld [buf] + fistp [perem] + mov ecx,[perem] + mov [perem],10 + cmp byte [string+10],'-' + je .@@f +@@: fimul [perem] + loop @b + ret +.@@f: fidiv [perem] + loop .@@f +.ret: ret +.null: fldz +ret + + align 4 +ftos: + test [flags],(1 shl 5) + jnz .prg + mov esi,string + mov dword [esi],0x20202020 + mov dword [esi+4],0x20202020 + mov dword [esi+8],0x20202020 + mov byte [esi+12],0x20 +; fld st0 +; fxtract +; fstp st0 +; fabs +; fistp [perem] +; mov eax,[perem] +; cmp eax,0x1a +; jg .1 +; stdcall FpuFLtoA,0,8,buf2,SRC1_FPU or SRC1_REAL; or STR_SCI +; mov ecx,9 +; mov esi,string +; mov edi,buf2 +;@@: mov al,[edi] +; test al,al +; jz @f +; mov [esi],al +; inc esi +; inc edi +; loop @b +;@@: ret + +.1: stdcall FpuFLtoA,0,8,buf2,SRC1_FPU or SRC1_REAL or STR_SCI + mov ecx,10 + mov esi,string + mov edi,buf2 +@@: mov al,[edi] + test al,al + jz .ret + mov [esi],al + inc esi + inc edi + loop @b +; add edi,9 +@@: cmp byte [edi],0 + je @f + inc edi + jmp @b +@@: mov ax,[edi-2] + mov [string+11],ax + mov al,[edi-5] + mov [string+10],al +.ret: +; cmp word [string+11],0x2020 +; je .ret2 + cmp byte [string+10],'-' + je .ret2 + mov ax,[string+11] + sub ax,0x3030 + xchg ah,al + shl al,4 + shr ax,4 + cmp al,7 + jge .ret2 + mov word [string+10],' ' + mov byte [string+12],' ' + cmp al,0 + je .ret2 + xor edx,edx +@@: mov bl,[string+2+edx] + mov bh,[string+2+edx+1] + xchg bh,bl + mov [string+2+edx],bx + inc edx + dec al + jnz @b +.ret2: mov ecx,7 +@@: cmp byte [string+2+ecx],'0' + jne @f + mov byte [string+2+ecx],' ' + loop @b +@@: cmp byte [string+2+ecx],'.' + jne @f + mov byte [string+2+ecx],' ' +@@: cmp byte [string+10],'+' + jne @f + mov byte [string+10],' ' +@@: +ret +.toascii: + shl ax,4 + shr al,4 + cmp al,10 + sbb al,69h + das + rol ax,8 + cmp al,10 + sbb al,69h + das + ret +.prg: mov eax,0x20202020 + mov dword [string],eax + mov dword [string+4],eax + mov dword [string+8],eax + xor eax,eax + mov al,[schk] + mov ebx,eax + call .toascii + mov [string+11],ax + cmp [schk],3 + jb @f + movzx eax,byte [PMEM+ebx-3] + call .toascii + mov [string+8],ax +@@: cmp [schk],2 + jb @f + movzx eax,byte [PMEM+ebx-2] + call .toascii + mov [string+5],ax +@@: cmp [schk],1 + jb @f + movzx eax,byte [PMEM+ebx-1] + call .toascii + mov [string+2],ax +@@: +ret + + +; ********************************************* +; ******* WINDOW DEFINITIONS AND DRAW ********* +; ********************************************* + +draw_window: + mcall 12,1 + + mcall 48,3,sc,sizeof.system_colors + + mov edx,[sc.work] + or edx,0x34000000 + mov ecx,200 + shl ecx,16 + add ecx,[scin_height] + add ecx,343 + mcall 0,160 shl 16+485,,,,title + + mov ebp,smesh + mcall 65,bmp_file+8,185*65536+262,2*65536+75,4,palitra + + mcall 13,13*65536+122,24*65536+20,0xffffff + + call draw_string + + mcall 13,137*65536+32,48*65536+12,0x888888 + + call set_but + call draw_registers + call draw_stack + call draw_prog + + mcall 8,176*65536+11,61*65536+10,35,0xdadada + + mov edi,[sc.work] + or edi,0x34000000 + mcall 4,133*65536+63,0x81000000,txt.perek + mcall ,403*65536+4,,txt.prog + mcall ,403*65536+12,,txt.prog1 + mcall ,380*65536+323,,txt.sk + + if 0 + mov [scroll_bar_data_vertical.all_redraw],1 + push dword scroll_bar_data_vertical + call [scrollbar_ver_draw] + mov [scroll_bar_data_vertical.all_redraw],0 + endf + push dword edit1 + call [edit_box_draw] + + ;CK + call draw_schk + + ;обозначения регистров + mcall 4,240*65536+4,0x81000000,txt.regs + mov word [perem],"0:" + mov byte [perem+2],0 + mov ebx,210*65536+20 + mov edx,perem + push dword 15 +@@: cmp dword [esp],5 + je @f +.prevr: int 0x40 + add ebx,12 + inc byte [perem] + dec dword [esp] + jnz @b + jmp .nextr +@@: add byte [perem],7 + jmp .prevr +.nextr: add esp,4 + + ;обозначения стека + mcall 4,240*65536+220,0x81000000,txt.stk + mov word [perem],"T:" + mov byte [perem+2],0 + mov ebx,210*65536+240 + mov edx,perem + push dword 5 +.firsts: cmp dword [esp],4 + jne @f + mov byte [perem],"Z" + jmp .prevs +@@: cmp dword [esp],3 + jne @f + mov byte [perem],"Y" + jmp .prevs +@@: cmp dword [esp],2 + jne @f + mov byte [perem],"X" + jmp .prevs +@@: cmp dword [esp],1 + jne .prevs + mov dword [perem],"X1" +.prevs: int 0x40 + add ebx,12 + dec dword [esp] + jnz .firsts +.nexts: add esp,4 + + mcall 12,2 +ret + + align 4 +draw_string: +; mov edi,[sc.work] + or edi,0x34ffffff + mov edx,edi + mcall 13,20*65536+105,30*65536+7 + mcall 4,20*65536+30,0x900000ff,string,, +ret + + align 4 +draw_schk: + test [flags],(1 shl 13) + jnz .ret + mov edi,[sc.work] + or edi,0x34000000 + movzx ecx,[schk] + mcall 47,0x020100,,400*65536+323,0x50000000, +.ret: +ret + + align 4 +set_but: + mov ecx,34 + mov eax,8 +@@: push ecx + lea ebx,[ecx+0x80000000+1] + int 0x40 + pop ecx + loop @b + + xor edi,edi + mov esi,0xffffff + bt [flags],30 + jnc @f + mov esi,0x0 +@@: mcall 8,140*65536+7,50*65536+7,32 + mov esi,0x0 + add ebx,9*65536 + inc edx + bt [flags],30 + jnc @f + bt [flags],31 + jc @f + mov esi,0xffffff +@@: mcall + mov esi,0 + add ebx,9*65536 + inc edx + bt [flags],30 + jnc @f + bt [flags],31 + jnc @f + mov esi,0xffffff +@@: mcall + + mov ecx,30 + push ecx + mov ecx,89*65536+22 +.00: mov ebx,8*65536+27 +.0: pop eax + lea edx,[eax+(1 shl 30) + 1] + push eax + mcall 8,,, + mov eax,ecx + pop ecx + dec ecx + jz .ret + push ecx + cmp ecx,5 + je .1 + cmp ecx,10 + je .1 + cmp ecx,15 + je .1 + cmp ecx,20 + je .1 + cmp ecx,25 + je .1 + add ebx,36*65536 + mov ecx,eax + jmp .0 +.1: add eax,42*65536 + mov ecx,eax + jmp .00 +.ret: +ret + + align 4 +draw_registers: + test [flags],(1 shl 13) + jnz .ret + mov esi,R.0 + mov ecx,15 + mov edx,[sc.work] + or edx,0x34000000 + push edx + mov ebx,220*65536+150 + push ebx + mov ebx,20*65536+9 + push ebx + push esi ecx +@@: call .ftoa + mov ebx,[esp+12] + mov ecx,[esp+8] + mov edx,[esp+16] + mcall 13 + mov ebx,[esp+12] + mov eax,[esp+8] + shr eax,16 + mov bx,ax + mov ecx,0;[esp+16] + add ecx,0x80000000 + mov edx,buf2 + mcall 4 + dec dword [esp] + jz @f + add dword [esp+4],8 + mov esi,[esp+4] + add dword [esp+8],12*65536 + jmp @b +@@: add esp,20 +.ret: +ret + +.ftoa: + fld qword [esi] + fld st0 + fabs + fxtract + fstp st0 + fabs + fistp [perem] + mov eax,[perem] + cmp eax,0x1a+16383 + jge @f + cmp eax,0x1a + jge @f + stdcall FpuFLtoA,0,8,buf2,SRC1_FPU or SRC1_REAL; or STR_SCI + fstp st0 + ret +@@: stdcall FpuFLtoA,0,8,buf2,SRC1_FPU or SRC1_REAL or STR_SCI + fstp st0 + ret + + align 4 +draw_stack: +; test [flags],(1 shl 13) +; jnz .ret + mov esi,S.T + mov ecx,5 + mov edx,[sc.work] + or edx,0x34000000 + push edx + mov ebx,220*65536+150 + push ebx + mov ebx,240*65536+9 + push ebx + push esi ecx +@@: call draw_registers.ftoa + mov ebx,[esp+12] + mov ecx,[esp+8] + mov edx,[esp+16] + mcall 13 + mov ebx,[esp+12] + mov eax,[esp+8] + shr eax,16 + mov bx,ax + mov ecx,0;[esp+16] + add ecx,0x80000000 + mov edx,buf2 + mcall 4 + dec dword [esp] + jz @f + sub dword [esp+4],8 + mov esi,[esp+4] + add dword [esp+8],12*65536 + jmp @b +@@: add esp,20 +;.ret: +ret + + align 4 +draw_prog: + test [flags],(1 shl 13) + jnz .ret + pushd 26 + movzx eax,[schk] + mov [.sprog2],al + xor edx,edx + div dword [esp] + xor edx,edx + mul dword [esp] + mov [.sprog],al + mov edi,[sc.work] + or edi,0x34000000 + movzx ecx, [.sprog] + add ecx,26 + sub ecx,[esp] + mov esi,0x5000459a + push esi + cmp cl,[.sprog2] + jne @f + mov esi,0x50cc0000 +@@: mcall 47,0x020100,,400*65536+24,, + pop esi + add edx,30*65536 + movzx ecx,[.sprog] + add ecx,PMEM+26 + sub ecx,[esp] + movzx ecx, byte [ecx] + mcall + sub edx,30*65536 +@@: add edx,11 + dec dword [esp] + jz @f + movzx ecx, [.sprog] + add ecx,26 + sub ecx,[esp] + push esi + cmp cl,[.sprog2] + jne .2 + mov esi,0x50cc0000 +.2: mcall + pop esi + add edx,30*65536 + movzx ecx,[.sprog] + add ecx,PMEM+26 + sub ecx,[esp] + movzx ecx, byte [ecx] + mcall + sub edx,30*65536 + jmp @b +@@: pop eax +.ret: +ret +.sprog db 0 +.sprog2 db 0 + + + + + +window_load_save: + popad + mcall 51,1,.thread,(.threat_stack+32*4) + pushad + ret +.thread: + bts [flags],26 +.red: + mcall 12,1 + mov edi,txt.load + bt [flags],25 + jc @f + mov edi,txt.save +@@: mcall 0,50*65536+300,0x70*65536+60,(0x34ffffff),, + mcall 8,<245,43>,<2,14>,100,0xaaaaaa + mcall 4,<252,5>,(0x80000000),txt.enter + push dword edit2 + call [edit_box_draw] + mcall 12,2 +.still: + mcall 10 + dec al + jz .red + dec al + jz .key + dec al + jz .button + jmp .still +.button: + mcall 17,1 + cmp ah,1 + jne @f + .end: btr [flags],26 + mcall -1 + @@: cmp ah,100 + jne .still + bt [flags],25 + jc .ld + .sv: call save_prog + jnc .end + jmp .err + .ld: call load_prog + jnc .end + .err: mcall 4,<5,19>,(0x80000000),txt.error + jmp .still + + +.key: + mcall 2 + cmp ah,13 + jne @f + bt [flags],25 + jc .ld + jmp .sv + @@: cmp ah,27 + je .end + push dword edit2 + call [edit_box_key] + jmp .still + +.threat_stack: times 32 dd 0 + + +save_prog: + mov [_size],256+8*(15+5)+6*3 + mcall 68,12,[_size] + test eax,eax + jnz @f + stc + ret + +@@: mov [_buffer],eax + mov esi,S.X1 + mov edi,eax + mov byte [edi],"<" + mov dword [edi+1],"СТЕК" + mov byte [edi+5],">" + add edi,6 + mov ecx,5*2 + cld +@@: movsd + loop @b + mov esi,R.0 + mov byte [edi],"<" + mov dword [edi+1],"РГСТ" + mov byte [edi+5],">" + add edi,6 + mov ecx,15*2 + cld +@@: movsd + loop @b + mov esi,PMEM + mov byte [edi],"<" + mov dword [edi+1],"ПРГМ" + mov byte [edi+5],">" + add edi,6 + mov ecx,256/4 + cld +@@: movsd + loop @b + + mov [func_70.func_n],2 + push [_size] + pop [func_70.param3] + push [_buffer] + pop [func_70.param4] + mov [func_70.name],buf_cmd_lin + mcall 70,func_70 + cmp al,0 ;сохранён удачно? + je @f + mcall 68,13,[_buffer] + stc + ret +@@: mcall 68,13,[_buffer] + clc +ret + +load_prog: + mov [func_70.func_n],5 + mov [func_70.param3],0 + mov [func_70.param4],bufferfinfo + mov [func_70.name],buf_cmd_lin + mcall 70,func_70 + test al,al ;файл найден? + jz @f + stc + ret + @@: mov eax, dword [bufferfinfo+32] ;копируем размер файла + cmp eax,256+8*(15+5)+6*3 + jbe @f + stc + ret + +_size dd 0 +_buffer dd 0 + +@@: mov [_size],eax + mcall 68,12,[_size] + test eax,eax + jnz @f + stc + ret ;ошибка на выделение блока + @@: + mov [_buffer],eax + mov [func_70.func_n],0 + mov [func_70.name],buf_cmd_lin + push dword [_size] + pop dword [func_70.param3] + push dword [_buffer] + pop dword [func_70.param4] + mcall 70,func_70 + test eax,eax + jz @f + stc + ret ;ошибка чтения +@@: + + mov esi,[_buffer] + mov ecx,[_size] +@@: cmp byte [esi],"<" + je .@f1 + inc esi + loop @b +.end: mcall 68,13,[_buffer] + clc + ret +.@f1: inc esi + cmp dword [esi],"СТЕК" + je .st + cmp dword [esi],"РГСТ" + je .rg + cmp dword [esi],"ПРГМ" + je .pr + jmp @b +.st: mov edi,S.X1 + add esi,5 + mov ebx,5*2*4 + cld + .st@: movsb + cmp byte [esi],"<" + jne .stB + inc esi + cmp dword [esi],"РГСТ" + je .rg + cmp dword [esi],"ПРГМ" + je .pr + dec esi + .stB: dec ecx + jz .end + dec ebx + jnz .st@ + jmp @b +.rg: mov edi,R.0 + add esi,5 + mov ebx,15*2*4 + cld + .rg@: movsb + cmp byte [esi],"<" + jne .rgB + inc esi + cmp dword [esi],"СТЕК" + je .st + cmp dword [esi],"ПРГМ" + je .pr + dec esi + .rgB: dec ecx + jz .end + dec ebx + jnz .rg@ + jmp @b +.pr: mov edi,PMEM + mov eax,0 + mov ebx,256/4 + .pr0: mov [edi],eax + add edi,4 + dec ebx + jnz .pr0 + mov edi,PMEM + add esi,5 + mov ebx,256 + cld + .pr@: movsb + cmp byte [esi],"<" + jne .prB + inc esi + cmp dword [esi],"СТЕК" + je .st + cmp dword [esi],"РГСТ" + je .rg + dec esi + .prB: dec ecx + jz .end + dec ebx + jnz .pr@ +jmp @b + + + + + + +align 4 + +S: +.X1: dq 0.0 +.X: dq 0.0 +.Y: dq 0.0 +.Z: dq 0.0 +.T: dq 0.0 + +RS: +times 10 db 0 + +align 4 +R: +.0: dq 0.0 +.1: dq 0.0 +.2: dq 0.0 +.3: dq 0.0 +.4: dq 0.0 +.5: dq 0.0 +.6: dq 0.0 +.7: dq 0.0 +.8: dq 0.0 +.9: dq 0.0 +.A: dq 0.0 +.B: dq 0.0 +.C: dq 0.0 +.D: dq 0.0 +.E: dq 0.0 +.F: dq 0.0 +dq 0.0 + + +align 4 +myimport: +edit_box_draw dd aEdit_box_draw +edit_box_key dd aEdit_box_key +edit_box_mouse dd aEdit_box_mouse +version_ed dd aVersion_ed + +scrollbar_ver_draw dd aScrollbar_ver_draw +scrollbar_ver_mouse dd aScrollbar_ver_mouse +version_scrollbar dd aVersion_scrollbar + + dd 0 + dd 0 + +aEdit_box_draw db 'edit_box',0 +aEdit_box_key db 'edit_box_key',0 +aEdit_box_mouse db 'edit_box_mouse',0 +aVersion_ed db 'version_ed',0 + +aScrollbar_ver_draw db 'scrollbar_v_draw',0 +aScrollbar_ver_mouse db 'scrollbar_v_mouse',0 +aVersion_scrollbar db 'version_scrollbar',0 + +if 0 + +align 4 +scroll_bar_data_vertical: +.x: +.size_x dw 15;+0 +.start_x dw 455 ;+2 +.y: +.size_y dw 284 ;+4 +.start_y dw 19 ;+6 +.btn_high dd 15 ;+8 +.type dd 1 ;+12 +.max_area dd 300+20 ;+16 +.cur_area dd 50 ;+20 +.position dd 0 ;+24 +.bckg_col dd 0xAAAAAA ;+28 +.frnt_col dd 0xCCCCCC ;+32 +.line_col dd 0 ;+36 +.redraw dd 0 ;+40 +.delta dw 0 ;+44 +.delta2 dw 0 ;+46 +.run_x: +.r_size_x dw 0 ;+48 +.r_start_x dw 0 ;+50 +.run_y: +.r_size_y dw 0 ;+52 +.r_start_y dw 0 ;+54 +.m_pos dd 0 ;+56 +.m_pos_2 dd 0 ;+60 +.m_keys dd 0 ;+64 +.run_size dd 0 ;+68 +.position2 dd 0 ;+72 +.work_size dd 0 ;+76 +.all_redraw dd 0 ;+80 +.ar_offset dd 10 ;+84 + +endf + +func_70: + .func_n dd ? + .param1 dd 0 + .param2 dd 0 + .param3 dd ? + .param4 dd ? + .rezerv db 0 + .name dd ? + +flags dd _flags + +_pause dd 10 +string_zero db " 0 ",0 +buf: times 10 db 0 +perem dd 0 +buf2: times 25 db 0 +string: db " 0 ",0 +buf3: times 25 db 0 +schk db 0 + +title db appname,version,0 + +txt: +.save db 'Сохранить (Ctrl+S)',0 +.error db 'Ошибка',0 +.load db 'Загрузить (Ctrl+L)',0 +.enter db 'Enter',0 +.regs db "Регистры",0 +.stk db "Стек",0 +.perek db "Р ГРД Г >",0 +.prog db "Программа",0 +.prog1 db "Шаг Код",0 +.sk db "СК:",0 +.edbox db " ",0 + +system_path db '/sys/lib/' +boxlib_name db 'box_lib.obj',0 +head_f_i: +head_f_l db 'error',0 +err_message_found_lib db 'box_lib.obj was not found',0 +err_message_import db 'box_lib.obj was not imported',0 + +edit1 edit_box 20,427,320,0xffffff,0x6a9480,0,0xAABBCC,0,2,txt.edbox,ed_focus,ed_focus,0,0 +edit2 edit_box 240,2,2,0xffffff,0x6a9480,0,0xAABBCC,0,4096,buf_cmd_lin,ed_focus,2,0,0 + +virtual at 0 +file 'MK_b3-34_hand.BMP':0xA,4 +load offbits dword from 0 +end virtual + +palitra: + file 'MK_b3-34_hand.BMP':0x36,offbits-0x36 + +sizey = 262 +sizex = 185 + 7 +smesh = 3 + +bmp_file: + file 'MK_b3-34_hand.BMP':110 +repeat sizey/2 +y = % - 1 +z = sizey - % +repeat sizex/2/4 +load a dword from $ - sizex*sizey/2 + sizex*y/2+(%-1)*4 +load b dword from $ - sizex*sizey/2 + sizex*z/2+(%-1)*4 +store dword a at $ - sizex*sizey/2 + sizex*z/2+(%-1)*4 +store dword b at $ - sizex*sizey/2 + sizex*y/2+(%-1)*4 +end repeat +end repeat + +sound_data: +db 40 +dw 670 +db 0 + +I_END: + +sc system_colors + +procinfo: rb 1024 +buf_cmd_lin rb 0 +cur_dir_path rb 4096 + + +PMEM: rb 256 + +bufferfinfo rb 40 +scin_height rd 1 + +D_END: \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/config.inc b/programs/emulator/PrMK/trunk/config.inc new file mode 100644 index 0000000000..4be62cc03b --- /dev/null +++ b/programs/emulator/PrMK/trunk/config.inc @@ -0,0 +1 @@ +__CPU_type fix p5 diff --git a/programs/emulator/PrMK/trunk/docs/b3-34help0.htm b/programs/emulator/PrMK/trunk/docs/b3-34help0.htm new file mode 100644 index 0000000000..9dc4145fa5 --- /dev/null +++ b/programs/emulator/PrMK/trunk/docs/b3-34help0.htm @@ -0,0 +1,739 @@ + + +┴3-34 - ъЁрЄъюх ЁєъютюфёЄтю + + + + + + + + + + + +
┬эшьрэшх! ─рээ√щ + фюъєьхэЄ эрїюфшЄё  т яЁюЎхёёх ЁрчЁрсюЄъш ш ьюцхЄ ёюфхЁцрЄ№ ю°шсъш. ─рээ√щ фюъєьхэЄ - хёЄ№ ёшэЄхч + юЁшушэры№эюую "╨єъютюфёЄтр яю ¤ъёяыєрЄрЎшш" ё фюяюыэхэш ьш ртЄюЁр + яЁюуЁрьь√ "╩ры№ъєы ЄюЁ ┴3-34".
+

 

+

╩ры№ъєы ЄюЁ ┴3-34.

+

╤юфхЁцрэшх яръхЄр:
+ ╩ЁрЄъюх ЁєъютюфёЄтю
+ (¤ЄюЄ Їрщы) ╥рсышЎр + ъюьрэф ╬яшёрэшх яЁюуЁрьь√

+


+
╩ЁрЄъюх ЁєъютюфёЄтю.

+


+

+ + + + +
+

═єцхэ ыш ┬рь Єръющ ъры№ъєы ЄюЁ?

+

╩ры№ъєы ЄюЁ ┴3-34  ты хЄё  яЁюуЁрььшЁєхь√ь ьшъЁюъы№ъєы ЄюЁюь (╧╠╩) + ш яЁхфэрчэрўхэ фы  т√яюыэхэш  эрєўэ√ї, шэцхэхЁэ√ї ш ёЄрЄшёЄшўхёъшї Ёрёў╕Єют. + ┬ юЄышўшх юЄ яЁюёЄ√ї ъры№ъєы ЄюЁют, т ┴3-34 юЄёєЄёЄтєхЄ ъыртш°р + = (Ёртэю). ┬ ┴3-34 ёэрўрыр ттюф Єё  юяхЁрэф√, чрЄхь Ёх°рхЄё  ўЄю ё эшьш + фхырЄ№. ═ряЁшьхЁ, ўЄюс√ т√ўшёышЄ№ ёєььє 2+2 эрфю эрцрЄ№ эр ъыртш°є 2, + чрЄхь эр ёшэ■■ ъыртш°є "ёЄЁхыър ттхЁї", чрЄхь эр ъыртш°є 2 ш + эр ёшэ■■ ъыртш°є +, эр шэфшърЄюЁх т√ётхЄшЄё  Ёхчєы№ЄрЄ (4). ┼ёыш ┬рь эрфю + ёюїЁрэшЄ№ эхёъюы№ъю фышээ√ї ўшёхы фы  яютЄюЁэюую шї шёяюы№чютрэш , фюёЄрЄюўэю + яюёых ттюфр ўшёыр эрцрЄ№ фтх ъыртш°ш - ╧ ш ы■сє■, юЄ 0 фю F, ш яЁюфюыцшЄ№ + ЁрсюЄє. ╧ютЄюЁшь яЁхф√фє∙шщ яЁшьхЁ, Єюы№ъю яЁш ¤Єюь ёюїЁрэшь юяхЁрэф√ + т ярь Єш. ═рцшьрхь ъыртш°є 2, ъыртш°є ╧, ъыртш°є 1, ъыртш°є 2, ъыртш°є + ╧, ъыртш°є 2, ъыртш°є +, эр шэфшърЄюЁх т√ётхЄшЄё  Ёхчєы№ЄрЄ (4). ╥хяхЁ№ + яЁютхЁшь, ўхьє сєфхЄ Ёртэю яЁюшчтхфхэшх ттхф╕э√ї Ёрэхх ўшёхы. ═рцшьрхь + ъыртш°є ╚╧, ъыртш°є 1, ъыртш°є ╚╧, ъыртш°є 2, ёшэ■■ ъыртш°є X (єьэюцшЄ№). + ▌Єшь тёх єфюсёЄтр "ьр°шээ√" эх шёўхЁя√тр■Єё . ╬эш яЁю ты ■Єё  + т яюыэющ ьхЁх Єюуфр, ъюуфр ЄЁхсє■Єё  ьэюуюўшёыхээ√х т√ўшёыхэш  фы  ёюёЄртыхэшх + ЄрсышЎ ш уЁрЇшъют.

+
+
+ + + + +
+

╩ры№ъєы ЄюЁ шьххЄ:

+
    +
  • яЁюуЁрьэє■ ярь Є№ юс·╕ьюь т 100 шыш 256 °руют;
  • +
  • 16 рфЁхёєхь√ї ЁхушёЄЁют ярь Єш фы  їЁрэхэш  фрээ√ї шыш рфЁхёют яхЁхїюфр + т яЁюуЁрььх;
  • +
  • ъюьрэф√ яЁ ь√ї ш ъюётхээ√ї яхЁхїюфют т яЁюуЁрььх, ъюьрэф√ т√чютр + яюфяЁюуЁрь ш ъюьрэф√ тючтЁрЄр шч яюфяЁюуЁрь;
  • +
  • тючьюцэюёЄ№ юсЁр∙хэш  ъ яюфяЁюуЁрььх тэєЄЁш яюфяЁюуЁрь. ├ыєсшэр Єръшї + юсЁр∙хэшщ Ёртэр 5;
  • +
  • ъюьрэф√ яЁ ьюую ш ъюётхээюую схчєёыютэюую яхЁхїюфр;
  • +
  • ўхЄ√Ёх Єшяр ъюьрэф яЁ ьюую ш ъюётхээюую єёыютэюую яхЁхїюфр (яю єёыютш ь + x=0, x!=0 (эх Ёртэю 0), x>=0 (сюы№°х шыш Ёртэ хЄё  0), x<0);
  • +
  • ъюьрэф√ юЁурэшчрЎшш Ўшъыют;
  • +
  • ъюьрэф√ ъюётхээющ чряшёш ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ√ ярь Єш;
  • +
  • ъюьрэф√ ъюётхээющ шэфшърЎшш ёюфхЁцшьюую ЁхушёЄЁют ярь Єш;
  • +
  • ъюьрэф√ ёсЁюёр ёў╕Єўшър рфЁхёют т эєыхтюх ёюёЄю эшх;
  • +
  • ъюьрэфр яєёър ш юёЄрэютъш яЁш ртЄюьрЄшўхёъюь т√ўшёыхэшш яю яЁюуЁрььх;
  • +
  • ъюьрэфр яю°руютюую т√яюыэхэш  яЁюуЁрьь√ т Ёхцшьх "└тЄюьрЄшўхёър  ЁрсюЄр";
  • +
  • шэфшърЎш  ъюфют ЄЁ╕ї яюёыхфютрЄхы№э√ї °руют яЁюуЁрьь√ ш Єхъє∙хую ёюёЄю эш  + ёў╕Єўшър рфЁхёют;
  • +
  • ъыртш°ш яю°руютюую яЁюёьюЄЁр яЁюуЁрьь√ т ёЄюЁюэє єтхышўхэш  шыш єьхэ№°хэш  + рфЁхёют т Ёхцшьх "╧ЁюуЁрььшЁютрэшх";
  • +
  • ъюьрэфр т√тюфр Ёхчєы№ЄрЄют т Їрщы фы  яюёыхфє■∙хщ яхўрЄш эр яЁшэЄхЁх
  • +
+
+
+ + + + +
+
+

┬тюф ўшёхы.

+

┬тюф ўшёхы, юяхЁрЎшщ ш ъюьрэф т ьшъЁюъры№ъєы ЄюЁ юёє∙хёЄты хЄё  + эрцрЄшхь ёююЄтхЄёЄтє■∙шї ъыртш° ыхтющ ъэюяъющ ь√°ш. ╚ьххЄё  яюър эх + яюыэюёЄ№■ Ёхрышчютрээр  тючьюцэюёЄ№ ттюфр яюёЁхфёЄтюь ъыртшрЄєЁ√. (═рфю + юЄьхЄшЄ№, ўЄю ёыюцэюёЄ№ ЁхрышчрЎшш ттюфр ё ъыртшрЄєЁ√ юсєёыютыхэр юЄёєЄёЄтшхь + яюфїюф ∙шї яю ёь√ёыє эрчтрэшщ эр ъыртш°рї ёЄрэфрЁЄэющ ъыртшрЄєЁ√. └тЄюЁ + с√ы с√ сыруюфрЁхэ чр Ўхээ√щ ёютхЄ яю ¤Єющ яЁюсыхьх.) ╠эюушх + ъыртш°ш шьх■Є фтющэє■ ш ЄЁющэє■ ёшьтюышъє. ╬фшэ ёшьтюы шчюсЁрц╕э эхяюёЁхфёЄтхээю + эр ъыртш°х, тЄюЁющ - эрф ъыртш°хщ ъЁрёэ√ь ЎтхЄюь, ЄЁхЄшщ - ёэшчє шыш + ёяЁртр юЄ ъыртш°ш ў╕Ёэ√ь ЎтхЄюь. ┬тюф ЇєэъЎшш, ёшьтюы ъюЄюЁющ шчюсЁрц╕э + ъЁрёэ√ь ЎтхЄюь эрф ъыртш°хщ, юёє∙хёЄты хЄё  эрцрЄшхь эр яЁхЇшъёэє■ ъыртш°є + F шыш ╩, чрЄхь эр ъыртш°є эрф ъюЄюЁющ шчюсЁрц╕э ёшьтюы ттюфшьющ ЇєэъЎшш. + ═рчэрўхэшх ъыртш° яЁштхфхэю т ЄрсышЎх + ъюьрэф (ЁрчьхЁ Їрщыр >81 ъсрщЄ).

+
+
+
+ + + + +
+

─тр Ёхцшьр ЁрсюЄ√ ъры№ъєы ЄюЁр.

+

"└тЄюьрЄшўхёър  ЁрсюЄр" - юёэютэющ Ёхцшь ЁрсюЄ√.
+ "╧ЁюуЁрььшЁютрэшх" - Ёхцшь яЁхфэрчэрўхэ фы  ттюфр ъюфр яЁюуЁрьь√, + тъы■ўрхЄё  яюёЁхфёЄтюь эрцрЄш  эр ъыртш°ш F ш ╧╨├. ┬√їюф шч Ёхцшьр - эрцрЄшхь + ъыртш° F ш └┬╥.

+
+
+ + + + + + + + + + + + + +
+
+

╨хушёЄЁ√ ёЄхър.

+

┬ ьшъЁюъы№ъєы ЄюЁх + шьх■Єё  5 юяхЁрЎшюээ√ї ЁхушёЄЁют X1, X, Y, Z, T. ╨хушёЄЁ X ёыєцшЄ фы  + яЁш╕ьр ш їЁрэхэш  ттюфшьюую ўшёыр ш Ёхчєы№ЄрЄр т√ўшёыхэшщ. ┼ую ёюфхЁцшьюх + юЄюсЁрцрхЄё  эр шэфшърЄюЁх. ╨хушёЄЁ + Y ёыєцшЄ фы  яЁш╕ьр шэЇюЁьрЎшш шч + ЁхушёЄЁр X, ўЄю юсхёяхўштрхЄ яЁш эхюсїюфшьюёЄш, ттюф т ЁхушёЄЁ X тЄюЁюую + ўшёыр. ╟рэхёхэшх ўшёыр + т ЁхушёЄЁ Y яЁюшёїюфшЄ яЁш эрцрЄшш эр ъэюяъє "ёЄЁхыър + ттхЁї".

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
╨шё. 1 +

╤їхьрЄшўэюх яЁхфёЄртыхэшх ЁхушёЄЁют + ёЄхър.

+

╨хушёЄЁ√ ёЄхър X, Y, Z ш T юЁурэшчютрэ√ яю яЁшэЎшяє ьрурчшээющ + ярь Єш, ъюуфр яюёыхфютрЄхы№эю чряшёрээр  шэЇюЁьрЎш  ьюцхЄ с√Є№ ёўшЄрэр + Єюы№ъю т яюёыхфютрЄхы№эюёЄш, юсЁрЄэющ яюёыхфютрЄхы№эюёЄш чряшёш + (яюёыхфэхх чряшёрээюх ўшёыю  ты хЄё  яхЁт√ь). ═ряЁшьхЁ, ъюуфр ттюфшЄё  + юяхЁрэф т ЁхушёЄЁ X ъюьрэфющ ўЄхэш  шч ЁхушёЄЁр ярь Єш, Єю ёюфхЁцшьюх + ЁхушёЄЁр X ъюяшЁєхЄё  т ЁхушёЄЁ Y (ёфтшурхЄё  ттхЁї), р яЁхф√фє∙хх + ёюфхЁцшьюх ЁхушёЄЁр Y ъюяшЁєхЄё  т ЁхушёЄЁ Z, яЁхф√фє∙хх ёюфхЁцшьюх + ЁхушёЄЁр Z ъюяшЁєхЄё  т ЁхушёЄЁ T. ╧Ёш т√яюыэхэшш фтєїьхёЄэющ + юяхЁрЎшш тчршьюфхщёЄтє■Є ЁхушёЄЁ√ Y ш X. ╨хчєы№ЄрЄ яюьх∙рхЄё  + т ЁхушёЄЁ X, ЁхушёЄЁ Y яюыєўрхЄ ёюфхЁцшьюх ЁхушёЄЁр Z, ЁхушёЄЁ Z + яюыєўрхЄ ёюфхЁцшьюх ЁхушёЄЁр T, р ёюфхЁцшьюх ЁхушёЄЁр T юёЄр╕Єё  + эхшчьхээ√ь. ╨хушёЄЁ X1 яюыєўрхЄ ёюфхЁцшьюх ЁхушёЄЁр X, ъюЄюЁюх Єрь + с√ыю фю т√яюыэхэш  ¤Єющ юяхЁрЎшш (Ёшё. 5). ╨хушёЄЁ + X1 ёыєцшЄ фы  ёюїЁрэхэш  яЁхф√фє∙хую ёюфхЁцшьюую ЁхушёЄЁр X. +

+
╨шё. 2 +

 

+

╩юьрэфр яЁюфтшцхэш  ёЄхър ттхЁї.
+
(ёЄЁхыър ттхЁї)

+

╤фтшу ёюфхЁцшьюую ЁхушёЄЁют ёЄхър яЁюшёїюфшЄ яю ёїхьх: + X->Y->Z->T (Ёшё. 2). ╤юфхЁцшьюх ЁхушёЄЁр Ёхчєы№ЄрЄр яЁхф√фє∙хщ юяхЁрЎшш + X1 эх шчьхэ хЄё .

+

 

+
╨шё. 3 
╨шё. 4 +

╩юьрэфр юсьхэр ёюфхЁцшь√ь ЁхушёЄЁют X ш Y.
+
(эр ъыртш°х шчюсЁрцхэю XY ёю ёЄЁхыърьш)

+


+ ╤їхьр юсьхэр ёюфхЁцшь√ь ЁхушёЄЁют яюърчрэр эр Ёшёєэъх 4.

+
╨шё. 5 
╨шё. 6 +

╨хушёЄЁ яЁхф√фє∙хую + Ёхчєы№ЄрЄр.

+

┬ фюяюыэхэшх ъ ўхЄ√Ё╕ь ёЄхъют√ь ЁхушёЄЁрь т ьшъЁюъы№ъєы ЄюЁх + шьххЄё  х∙╕ юфшэ ЁхушёЄЁ , эрч√трхь√щ ЁхушёЄЁюь яЁхф√фє∙хую Ёхчєы№ЄрЄр. + ▌ЄюЄ ЁхушёЄЁ ёюїЁрэ хЄ чэрўхэшх ўшёыр, ъюЄюЁюх эрїюфшыюё№ т ЁхушёЄЁх + X фю т√яюыэхэш  юяхЁрЎшш. ─ы  яЁютхЁъш ¤Єюую ўшёыр эрцьшЄх ъыртш°ш + F ш ┬ї. ╧Ёш ¤Єюь яЁюшчющф╕Є яхЁхьх∙хэшх шэЇюЁьрЎшш т ёЄхъх (Ёшё. + 6): X->Y->Z->T, X1->X.

+
╨шё. 7 +
+

 

+

╩юьрэфр Rotate.
+
(т юЁшушэрых шчюсЁрцхэю ъюы№Ўю ёю ёЄЁхыърьш)

+

┬ Ёхчєы№ЄрЄх т√яюыэхэш  ¤Єющ ъюьрэф√ юсьхэ ЁхушёЄЁрьш + ёЄхър яЁюшчющф╕Є яю ёїхьх: X->X1, T->Z->Y->X, X1->T (Ёшё. 7).

+
+
+
+
+

╨хушёЄЁ√ юс∙хую эрчэрўхэш .

+

▌Єю 16 рфЁхёєхь√ї ЁхушёЄЁют ярь Єш фы  їЁрэхэш  фрээ√ї + шыш рфЁхёют яхЁхїюфют т яЁюуЁрььх. ═юьхЁ ЁхушёЄЁр юсючэрўрхЄё  °хёэрфЎрЄшЁшўэ√ь + ўшёыюь - юЄ 0 фю F. ┬ юЁшушэрых "ЁєъютюфёЄтр яю ¤ъёяыєрЄрЎшш" + т эрчтрэшх ¤Єшї ЁхушёЄЁют ттхф╕э яЁхЇшъё RG (RG0, RG1 ... ш Є.ф.). ╚ч + ЄрсышЎ√ + ъюьрэф тшфэю, ўЄю ъюф ъюьрэф юсЁр∙хэш  ъ ЁхушёЄЁрь + юфэючэрўэю юяЁхфхы хЄё  тЄюЁ√ь яюыєсрщЄюь ъюфр ъюьрэф√, эряЁшьхЁ, Єръшї + ъръ 40 -4F (чряшё№ т ЁхушёЄЁ ярь Єш - ъыртш°ш ╧, 0 фю ╧.F), 60 -6F (шчтыхўхэшх + шч ЁхушёЄЁют ярь Єш т ЁхушёЄЁ X - ъыртш°ш ╧, 0 фю ╧.F) ш фЁєушї ъюьрэфрї. +

+
+
+
+

╨хушёЄЁ√ ёЄхър тючтЁрЄр.

+

╩ры№ъєы ЄюЁ шьххЄ 5 ЁхушёЄЁют юсЁрчє■∙шї ёЄхъ тючтЁрЄр, + ъюЄюЁ√х яЁюуЁрьэю эхфюёЄєяэ√, юфэръю юэш яючтюы ■Є яЁюуЁрььх т√чтрЄ№ + фю 5-Єш тыюцхээ√ї яюфяЁюуЁрь. ┬  ўхщърї ёЄхър тючтЁрЄр їЁрэ Єё  рфЁхёр + тючтЁрЄр шч яюфяЁюуЁрь.

+
+
+
+ + + + +
+
+

╬фэюьхёЄэ√х юяхЁрЎшш.

+

╬фэюьхёЄэ√х юяхЁрЎшш - ¤Єю юяхЁрЎшш фы  т√яюыэхэш  ъюЄюЁ√ї ЄЁхсєхЄё  + юфшэ юяхЁрэф. ╬яхЁрэф, эрф ъюЄюЁрь яЁюшчтюфшЄё  юяхЁрЎш  эрїюфшЄё  т + ЁхушёЄЁх X ш т√ётхўштрхЄё  эр шэфшърЄюЁх. ╨хчєы№ЄрЄ юяхЁрЎшш чряшё√трхЄё  + т ЁхушёЄЁ X, яЁш ¤Єюь ёюфхЁцшьюх юёЄры№э√ї ЁхушёЄЁют эх шчьхэ хЄё . + ╤ыхфє■∙шх юяхЁрЎшш т ┴3-34  ты ■Єё  юфэюьхёЄэ√ьш:

+
+
    +
  • +
    т√ўшёыхэшх ыюурЁшЇьшўхёъшї ЇєэъЎшщ (lg, ln);
    +
  • +
  • ёЄхяхээ√ї ЇєэъЎшщ (x^2 - тючтхфхэшх т ътрфЁрЄ, e^x, 10^x);
  • +
  • ЄЁшуюэюьхЄЁшўхёъшї яЁ ь√ї ш юсЁрЄэ√ї ЇєэъЎшщ ();
  • +
  • т√ўшёыхэшх ътрфЁрЄэюую ъюЁэ  (sqr);
  • +
  • т√ўшёыхэшх юсЁрЄэющ тхышўшэ√(1/x);
  • +
  • ттюф ўшёыр яш (PI);
    +
  • +
+
+
+ + + + +
+
+

─тєїьхёЄэ√х юяхЁрЎшш.

+

─тєїьхёЄэ√х юяхЁрЎшш - ¤Єю юяхЁрЎшш фы  т√яюыэхэш  ъюЄюЁ√ї + ЄЁхсєхЄё  фтр юяхЁрэфр, Ёрёяюыюцхэ√ї т ЁхушёЄЁрї X ш Y. ╩ Єръшь юяхЁрЎш ь + юЄэюё Єё  ўхЄ√Ёх рЁшЇьхЄшўхёъшї фхщёЄтш  (ёыюцхэшх, т√ўшЄрэшх, єьэюцхэшх + ш фхыхэшх) ш т√ўшёыхэшх ёЄхяхээющ ЇєэъЎшш x^y (x т ёЄхяхэш y). ╨хчєы№ЄрЄ + юяхЁрЎшш чряшё√трхЄё  т ЁхушёЄЁ X. ╧Ёш ¤Єюь шэЇюЁьрЎш  т ЁхушёЄЁх Y, + їЁрэ ∙р ё  фю т√яюыэхэш  юяхЁрЎшш чрьхэ хЄё  ёюфхЁцшь√ь + ЁхушёЄЁр Z. ╤їхьр яхЁхфтшцхэш  т ёЄхъх T=T->Z->Y, X1=ёюфхЁцшьюьє + ЁхушёЄЁр X фю т√яюыэхэш  юяхЁрЎшш.

+
+
+
+ + + + +
+
+

╓хяюўхўэ√х т√ўшёыхэш .

+

┼ёыш эр шэфшърЄюЁх т√ётхўштрхЄё  Ёхчєы№ЄрЄ яЁхф√фє∙шї + т√ўшёыхэшщ, Єю эрсюЁ эр ъыртшрЄєЁх эютюую ўшёыр ртЄюьрЄшўхёъш яхЁхфтшурхЄ + шэЇюЁьрЎш■ шч ЁхушёЄЁр X т ЁхушёЄЁ Y. ╧хЁхьх∙хэшх + т ёЄхъх яЁюшёїюфшЄ яю ёїхьх X->Y->Z->T, яЁхф√фє∙хх ёюфхЁцшьюх + T ЄхЁ хЄё . ╥ръшь юсЁрчюь, Ёхчєы№ЄрЄ т√ўшёыхэш  яЁхф√фє∙хщ юяхЁрЎшш + ьюцхЄ єўрёЄтютрЄ№ т ърўхёЄтх тЄюЁюую юяхЁрэфр яЁш т√яюыэхэшш яюёыхфє■∙шї + т√ўшёыхэшщ.

+
+
+
+ + + + +
+

╩юьрэфр схчєёыютэюую яхЁхїюфр.

+

╩юьрэфр схчєёыютэюую яхЁхїюфр ЁхрышчєхЄё  ъыртш°хщ ┴╧ ш яюёыхфє■∙шь ттюфюь + рфЁхёр яхЁхїюфр. ▌Єр ъюьрэфр яЁхЁ√трхЄ хёЄхёЄтхээ√щ яюЁ фюъ т√яюыэхэш  + яЁюуЁрьь√ ш юёє∙хёЄты хЄ яЁхїюф ъ т√яюыэхэш■ ъюьрэф√, єърчрээющ т рфЁхёх + яхЁхїюфр. ─ышэр ъюьрэф√ - фтр °рур. ┼╕ ьюцэю шёяюы№чртрЄ№ х∙╕ фы  Ёєўэюую + яхЁхїюфр ъ цхырхьюьє рфЁхёє яЁш юЄырфъх яЁюуЁрьь√.

+
+
+ + + + +
+
+

╩юьрэф√ яхЁхїюфр яю єёыютш■.

+

╩юьрэф√ яхЁхїюфр яю єёыютш■ ( x<0 ышсю x=0, x>=0, + x!=0 (эх Ёртэю эєы■)) Ёхрышчє■Єё  ъыртш°хщ F, ъыртш°хщ єёыютш  " + x<0", "x=0", "x>=0", "x!=0" + ш ттюфюь рфЁхёр яхЁхїюфр. ╧ЁютхЁ хЄё  ёюцхЁцшьюх ЁхушёЄЁр X эр т√яюыэхэшх + чрфрээюую єёыютш . ┼ёыш єёыютшх эх т√яюыэ хЄё , + Єю ёыхфє■∙хщ яю яЁюуЁрььх сєфхЄ т√яюыэхэр ъюьрэфр, рфЁхё ъюЄюЁющ єърчрэ + эхяюёЁхфёЄтхээю т ъюьрэфх єёыютэюую яхЁхїюфр. ┼ёыш єёыютшх т√яюыэ хЄё , + Єю ёыхфє■∙хщ ъюьрэфющ сєфхЄ ёыхфє■∙р  чр рфЁхёюь яЁхїюфр ъюьрэфр. ─ышэр + ъюьрэф√ - фтр срщЄр (°рур) яЁюуЁрьэющ ярь Єш.

+
+
+
+ + + + +
+
+

╩юьрэфр т√чютр яЁюфяЁюуЁрьь√.

+

╩юьрэфр т√чютр яЁюфяЁюуЁрьь√ ЁхрышчєхЄё  ъыртш°хщ ╧╧ ш + ёфє■∙хьє чр эхщ рфЁхёюь (эрўрыр яюфяЁюуЁрьь√). ╧Ёш ¤Єюь т ёЄхъ + тючтЁрЄр чряшё√трхЄё  ёыхфє■∙шщ рфЁхё яЁюуЁрьь√, эр ъюЄюЁ√щ т фры№эхщ°хь + сєфхЄ ёфхырэ тчтЁрЄ шч яюфяЁюуЁрьь√ (┬/╬). ─ышэр ъюьрэф√ - фтр °рур. + ┬ Ёхцшьх "└тЄюьрЄшўхёър  ЁрсюЄр", ъюуфр яЁюуЁрььр эх т√яюыэ хЄё , + эрцрЄшх эр ъыртш°є ╧╧ яЁюшчтюфшЄ яю°руютюх т√яюыэхэшх яЁюуЁрьь√.

+
+
+
+ + + + +
+
+

╩юьрэф√ ъюётхээюую т√чютр яЁюфяЁюуЁрьь√.

+

╩юьрэфр ъюётхээюую т√чютр яЁюфяЁюуЁрьь√ ЁхрышчєхЄё  ъыртш°рьш + ╩ , ╧╧ ш ъыртш°хщ рфЁхёєхьюую ЁхушёЄЁр ( 0 ... F ). + ─ышэр ъюьрэф√ - юфшэ °ру. ╤ яюью∙№■ ¤Єющ ъюьрэфр яЁюшёїюфшЄ + ьюфшЇшърЎш  рфЁхёр, + їЁрэ ∙хуюё  т рфЁхёєхьюь ЁхушёЄЁх, шэфхъё ъюЄюЁюую тїюфшЄ т ъюьрэфє. + ╟рЄхь, чряшё√трхЄё  т ёЄхъ тючтЁрЄр ёыхфє■∙шщ + рфЁхё яЁюуЁрьь√, эр ъюЄюЁ√щ т фры№эхщ°хь сєфхЄ ёфхырэ тчтЁрЄ шч яюфяЁюуЁрьь√ + (ъюьрэфющ ┬/╬), ш юёє∙хёЄты хЄё  т√чют яюфяЁюуЁрьь√, чряшёрээющ яю ьюфшЇшЎшЁютрээюьє + рфЁхёє.

+
+
+
+ + + + +
+
+

╩юьрэфр тючтЁрЄр шч яЁюфяЁюуЁрьь√.

+

╩юьрэфр тючтЁрЄр шч яЁюфяЁюуЁрьь√ ЁхрышчєхЄё  ъыртш°хщ + ┬/╬. ╚ч ёЄхър тючтЁрЄр ўшЄрхЄё  яюёыхфэшщ + рфЁхё, ъюЄюЁ√щ чряшё√трхЄё  Єєфр тю тЁхь  т√чютр яюфяЁюуЁрьь√ яюёЁхфёЄтюь + ъюьрэф√ ╧╧ ... (шыш ╩ ╧╧ ...), ш яЁюшёїюфшЄ яхЁхїюф эр ¤ЄюЄ рфЁхё.

+
+
+
+ + + + +
+

╩юётхээ√щ + схчєёыютэ√щ яхЁхїюф.

+

╩юьрэфр ъюётхээюую схчєёыютэюую яхЁхїюфр яю ьюфшЇшЎшЁютрээюьє рфЁхёє + Ёхрышчєхё  ъыртш°рьш ╩, ┴╧ ш ъыртш°хщ рфЁхёєхьюую ЁхушёЄЁр (юЄ 0 фю F, + юЄ A фю F - эрфяшёш ў╕Ёэюую ЎтхЄр). ╧Ёш шёяюыэхэшш + ¤Єющ ъюьрэф√ яЁюшёїюфшЄ ьюфшЇшърЎш  рфЁхёр, їЁрэ ∙хуюё  т рфЁхёєхьюь ЁхушёЄЁх + (шэфхъё ъюЄюЁюую тїюфшЄ т ъюьрэфє), ш яЁюшёїюфшЄ яхЁхїюф ъ шёяюэхэш■ ъюьрэф√, + чряшёрээющ яю эютюьє (ьюфшЇшЎшЁютрээюьє) рфЁхёє. ╠юфшЇшърЎш  рфЁхёр яЁюшёїюфшЄ + т чртшёшьюёЄш юЄ эюьхЁр ЁхушёЄЁр, тїюф ∙хую т ъюьрэфє. ┼ёыш ъюьрэфр ёюфхЁцшЄ + эюьхЁ юфэюую шч ЁхушёЄЁют 0, 1, 2, 3, Єю яЁш т√яюыэхэшш ъюьрэф√ шч ёюфхЁцшьюую + рфЁхёєхьюую ЁхушёЄЁр т√ўшЄрхЄё  1. ┼ёыш эюьхЁ рфЁхёєхьюую ЁхушёЄЁр 4 , + 5 шыш 6, Єю ъ ёюфхЁцшьюьє ЁхушёЄЁр яЁшсрты хЄё  1. ┼ёыш эюьхЁ рфЁхёєхьюую + ЁхушёЄЁр юЄ 7 фю F, Єю ёюфхЁцшьюх рфЁхёєхьюую ЁхушёЄЁр эх шчьхэ хЄё .

+
+

╥рсышЎр ьюфшЇшърЎшш + яЁш ъюётхээющ рфЁхёрЎшш.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
╨хушёЄЁ
+
+
╠юфшЇшърЎш 
+
+
═рфяшё№
+
+
0
+
+
-1
+
+
╩ыртш°р ё эрфяшё№■ 0
+
+
1
+
+
-1
+
+
╩ыртш°р ё эрфяшё№■ 1
+
+
2
+
+
-1
+
+
╩ыртш°р ё эрфяшё№■ 2
+
+
3
+
+
-1
+
+
╩ыртш°р ё эрфяшё№■ 3
+
+
4
+
+
+1
+
+
╩ыртш°р ё эрфяшё№■ 4
+
+
5
+
+
+1
+
+
╩ыртш°р ё эрфяшё№■ 5
+
+
6
+
+
+1
+
+
╩ыртш°р ё эрфяшё№■ 6
+
+
7
+
+
эхЄ
+
+
╩ыртш°р ё эрфяшё№■ 7
+
+
8
+
+
эхЄ
+
+
╩ыртш°р ё эрфяшё№■ 8
+
+
9
+
+
эхЄ
+
+
╩ыртш°р ё эрфяшё№■ 9
+
+
A
+
+
эхЄ
+
+
╩ыртш°р ё эрфяшё№■ , (чря Єр ), яюф ъыртш°хщ ў╕Ёэ√ь + ЎтхЄюь - ырЄшэёър  сєътр A.
+
+
B
+
+
эхЄ
+
+
╩ыртш°р ё эрфяшё№■ /-/, яюф ъыртш°хщ ў╕Ёэ√ь ЎтхЄюь - + ырЄшэёър  сєътр B.
+
+
C
+
+
эхЄ
+
+
╩ыртш°р ё эрфяшё№■ ┬╧, яюф ъыртш°хщ ў╕Ёэ√ь ЎтхЄюь - + ырЄшэёър  сєътр C.
+
+
D
+
+
эхЄ
+
+
╩ыртш°р ё эрфяшё№■ Cx, яюф ъыртш°хщ ў╕Ёэ√ь ЎтхЄюь - + ырЄшэёър  сєътр D.
+
+
E
+
+
эхЄ
+
+
╩ыртш°р ё эрфяшё№■ т тшфх ёЄЁхыъш ттхЁї, ёяЁртр юЄ ъыртш°ш + ў╕Ёэ√ь ЎтхЄюь - ырЄшэёър  сєътр E.
+
+
F
+
+
эхЄ
+
+
╩ыртш°р ё эрфяшё№■ - (чэръ ьшэєё), ёяЁртр юЄ ъыртш°ш + ў╕Ёэ√ь ЎтхЄюь - ырЄшэёър  сєътр F.
+
+
+ + + + + + + +
+

╩юётхээ√щ яхЁхїюф + яю єёыютш■.

+

╩юьрэф√ ъюётхээ√ї яхЁхїюфют яю єёыютш■ ЁхрышчєхЄё  ъыртш°хщ "╩", + ъыртш°хщ єёыютш  ( x<0 ышсю x=0, x>=0, x!=0 (эх Ёртэю эєы■)) ш ъыртш°хщ + рфЁхёєхьюую ЁхушёЄЁр (юЄ "0" фю "F"). ╤ яюью∙№■ ¤Єющ + ъюьрэф√ яЁютхЁ хЄё  ёюфхЁцшьюх ЁхушёЄЁр X эр т√яюыэхэшх чрфрээюую єёыютш . + ┼ёыш єёыютшх эх т√яюыэ хЄё  (юсЁрЄшЄх тэшьрэшх, + шьхээю - ъюуфр эх т√яюэ хЄё ), + Єю яЁюшёїюфшЄ ьюфшЇшърЎш  + (шчьхэхэшх) рфЁхёр, їЁрэ ∙хуюё  т рфЁхёєхьюь ЁхушёЄЁх, шэфхъё ъюЄюЁюую + тїюфшЄ т ъюьрэфє, ш юёє∙хёЄты хЄё  яхЁхїюф ъ т√яюыэхэш■ ъюьрэф√, чряшёрээющ + яю ьюфшЇшЎшЁютрээюьє рфЁхёє. ┼ёыш єёыютшх т√яюыэ хЄё , Єю яЁюшёїюфшЄ яхЁхїюф + ъ т√яюыэхэш■ ёыхфє■∙хщ ъюьрэф√. ╧Ёш ¤Єюь рфЁхё, чряшёрээ√щ т рфЁхёєхьюь + ЁхушёЄЁх, эх ьюфшЇшЎшЁєхЄё .

+
 
+ + + + +
+
+

╩юьрэф√ ъюётхээюую ўЄхэш  ЁхушёЄЁр + ярь Єш.

+

╩юьрэфр ьюфшЇшЎшЁєхЄ ЁхушёЄЁ , эюьхЁ ъюЄюЁюую тїюфшЄ т + ъюьрэфє (ёюуырёэю ЄрсышЎх ьюфшЇшърЎшш), + яюёых ўхую яЁюшёїюфшЄ ўЄхэшх ёююЄтхЄёЄтє■∙хую ЁхушёЄЁр т ЁхушёЄЁ X. + ╧ЁшьхЁ. ┼ёыш ёюфхЁцшьюх ЁхушёЄЁр 0 фю т√яюыэхэш  ъюьрэф√ с√ыю Ёртэю + 3, Єю яЁш т√яюыэхэшш ъюьрэф√ ╩ ╚╧ 0 єьхэ№°рхЄё  ёюфхЁцшьюх ЁхушёЄЁр + 0 (ЄхяхЁ№ юэю Ёртэю 2) ш яЁюшёїюфшЄ ўЄхэшх ёюфхЁцшьюую ЁхушёЄЁр 2 т + ЁхушёЄЁ X.

+
+
+
+ + + + +
+
+

╩юьрэф√ ъюётхээющ чряшёш т ЁхушёЄЁ + ярь Єш.

+

╩юьрэфр ьюфшЇшЎшЁєхЄ ЁхушёЄЁ , эюьхЁ ъюЄюЁюую тїюфшЄ т + ъюьрэфє (ёюуырёэю ЄрсышЎх ьюфшЇшърЎшш), + яюёых ўхую яЁюшёїюфшЄ чряшё№ т ёююЄтхЄёЄтє■∙шщ ЁхушёЄЁ ёюфхЁцшьюх ЁхушёЄЁр + X. ╧ЁшьхЁ. ┼ёыш ёюфхЁцшьюх ЁхушёЄЁр 0 фю т√яюыэхэш  ъюьрэф√ с√ыю Ёртэю + 3, Єю яЁш т√яюыэхэшш ъюьрэф√ ╩ ╧ 0 єьхэ№°рхЄё  ёюфхЁцшьюх ЁхушёЄЁр 0 + (ЄхяхЁ№ юэю Ёртэю 2) ш яЁюшёїюфшЄ чряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ + 2.

+
+
+
+ + + + +
+
+

╩юьрэф√ юЁурэшчрЎшш Ўшъыют.

+

╩юьрэф√ юЁурэшчрЎшш Ўшъыют юЁурэшчє■Єё  ъыртш°рьш L0, + L1, L2, L3 т ёюўхЄрэшш ё яЁхЇшъёэющ ъыртш°хщ F. ╩юьрэфр ёюёЄюшЄ шч ъюфр + ъюьрэф√ ш ёыхфє■∙хую чр эхщ рфЁхёр яхЁхїюфр. ╧Ёш т√яюыэхэшш ъюьрэф√ + L0 яЁюшёїюфшЄ юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш RG0. ╧Ёш ърцфюь т√яюыэхэшш + ¤Єющ ъюьрэф√ шч ёюфхЁцшьюую ЁхушёЄЁр 0 т√ўшЄрхЄё  1 ш яЁюшчтюфшЄё  рэрышч + хую эр эєы№. ┼ёыш юэю эх Ёртэю эєы■, яЁюшёїюфшЄ яхЁхїюф ъ т√яюыэхэш■ + ъюьрэф√ яхЁхїюфр, тїюф ∙хую т ъюьрэфє. ┼ёыш ёюфхЁцшьюх ЁхушёЄЁр ярь Єш + RG0 Ёртэю эєы■, Єю Ўшъы чртхЁ°рхЄё  ш т√яюыэ хЄё  ёыхфє■∙р  ъюьрэфр. + ─ышэр ъюьрэф√ - фтр °рур.

+
+
+
+ + + + +
+

╧ЁюуЁрььшЁютрэшх.

+

┬їюф т Ёхцшь яЁюуЁрььшЁютрэш  юёє∙хёты хЄё  яюёЁхфёЄтюь эрцрЄш  эр ъыртш°ш + F ш ╧╨├. ╩ры№ъєы ЄюЁ яхЁхщф╕Є эр Єхъє∙шщ рфЁхё яЁюуЁрьь√. ┼ёыш ЄЁхсєхЄё  + яхЁхщЄш эр чрфрэ√щ рфЁхё, Єю яхЁхф тїюфюь т Ёхцшь яЁюуЁрььшЁютрэш  эрфю + яхЁхщЄш эр ¤ЄюЄ рфЁхё эрцрЄшхь ъыртш°ш ┴╧ ш ттюфюь рфЁхёр. ╧хЁхьх∙хэшх + яю яЁюуЁрььх яЁюшёїюфшЄ ртЄюьрЄшўхёъш яЁш ттюфх ъюьрэф шыш яЁшэєфшЄхы№эю + - ъыртш°рьш ╪├. ╤яЁртр эр шэфшърЄюЁх т√ётхўштрхЄё  рфЁхё ёыхфє■∙хую °рур + яЁюуЁрьь√. ┬ фЁєушї яюы ї шэфшърЄюЁр т√ётхўштр■Єё  (3 яюы ) ъюф√ ттхф╕ээ√ї + ъюьрэф т яюЁ фъх тючЁрёЄрэш , ёыхтр эряЁртю.
+ ┼ёыш эхюсїюфшью шёъы■ўшЄ№ шч яЁюуЁрьь√ ъръє■-ышсю ъюьрэфє, эхюсїюфшью + эрцрЄ№ ъыртш°є ╩ ш ъыртш°є ═╬╧, °ру яЁюуЁрьь√ чряюыэшЄё  ъюьрэфющ, ъюЄюЁр  + эшўхую эх фхырхЄ. ┬√їюф шч Ёхцшьр "╧ЁюуЁрььшЁютрэшх" юёє∙хёЄты хЄё  + эрцрЄшхь эр ъыртш°ш F ш └┬╥.

+
+
+ + + + +
+
+

┬√ўшёыхэшх яю яЁюуЁрььх.

+

┬√ўшёыхэш  яю яЁюуЁрььх эрўшэр■Єё  эрцрЄшхь эр ъыртш°є + ╤/╧. ═рўшэрхЄё  т√яюыэхэшх яЁюуЁрьь√ ё Єхъє∙хую рфЁхёр. ┼ёыш ЄЁхсєхЄё  + эрўрЄ№ (шыш яЁюфюыцшЄ№) яЁюуЁрььє ё ъюэъЁхЄэюую рфЁхёр, Єю эхюсїюфшью + яхЁхщЄш эр ¤ЄюЄ рфЁхё эрцрЄшхь ъыртш°ш ┴╧ ш ттюфюь рфЁхёр. ╬ёЄрэют т√ўшёыхэшщ + юёє∙хёЄты хЄё  яютЄюЁэ√ь эрцрЄшхь ъыртш°ш ╤/╧.

+
+
+
+ + + + +
+
+

╬Єышўш  юЄ юЁшушэрыры№эюую ┴3-34.

+

╧Ёш ъюётхээюь юсЁр∙хэшш ъюьрэф ъ ЁхушёЄЁрь, ъюуфр фюыцхэ + с√Є№ ёўшЄрэ эюьхЁ ЁхушёЄЁр, юЄ ёюфхЁцшьюую ёЄўшЄ√трхьюую ЁхушёЄЁр т√фхы хЄё  + Ўхыр  ўрёЄ№ (фЁюсэр  эх єўшЄ√трхЄё , эю ш эх ьхэ хЄё ), шч ъюЄюЁющ т√фхы Єё  + ьырф°хх чэрўшьюх, эх яЁхт√°р■∙хх ъюышўхёЄтр ЁхушёЄЁют ярь Єш ьшэєё 1 + (¤Єю 4 ьырф°шї сшЄр). ┬ ёыєўрх ёўшЄ√трэш  рфЁхёр яхЁхїюфр шёяюы№чєхЄё  + Ўхыр  ўрёЄ№ ёюфхЁцшьюую ЁхушёЄЁр. ┼ёыш рфЁхё яхЁхїюфр юърцхЄё  чр яЁхфхырьш + яЁюуЁрьь√, - яЁюуЁрььр т√фрёЄ ёююЄтхЄёЄтє■∙хх яЁхфєяЁхцфхэшх.

+
+
+

5 May, 2002 3:02

+ + diff --git a/programs/emulator/PrMK/trunk/docs/b3-34help1.htm b/programs/emulator/PrMK/trunk/docs/b3-34help1.htm new file mode 100644 index 0000000000..184ef82ef8 --- /dev/null +++ b/programs/emulator/PrMK/trunk/docs/b3-34help1.htm @@ -0,0 +1,3384 @@ + + +┴3-34 - ЄрсышЎр ъюьрэф + + + + +

<< эр эрўрыю

+

╩ры№ъєы ЄюЁ ┴3-34.

+

╩ЁрЄъюх ЁєъютюфёЄтю + . ╥рсышЎр + ъюьрэф (¤ЄюЄ Їрщы). +
+ ╬яшёрэшх яЁюуЁрьь√
.

+

╥рсышЎр ъюьрэф.
+ ╟хы╕э√ь ЎтхЄюь т√фхыхэ√ ъюьрэф√ ╠╩
+ ╩Ёрёэ√ь ЎтхЄюь т√фхыхэ√ эют√х ъюьрэф√
(фюсртыхэ√х + ртЄюЁюь яЁюуЁрьь√)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
╩юф
+
+
╩ыртш°р(ш)
+
+
═рчэрўхэшх ъюьрэф√
+
+
0
+
+
00
+
+
0
+
┬тюф ЎшЇЁ√ 0. ┬ ёюўхЄрэшш ё ъыртш°рьш + ╩, ╧, ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 0.
+
1
+
+
01
+
+
1
+
┬тюф ЎшЇЁ√ 1. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, + ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 1.
+
2
+
+
02
+
+
2
+
┬тюф ЎшЇЁ√ 2. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, + ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 2.
+
3
+
+
03
+
+
3
+
┬тюф ЎшЇЁ√ 3. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, + ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 3.
+
4
+
+
04
+
+
4
+
┬тюф ЎшЇЁ√ 4. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, + ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 4.
+
5
+
+
05
+
+
5
+
┬тюф ЎшЇЁ√ 5. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, + ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 5.
+
6
+
+
06
+
+
6
+
┬тюф ЎшЇЁ√ 6. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, + ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 6.
+
7
+
+
07
+
+
7
+
┬тюф ЎшЇЁ√ 7. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, + ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 7.
+
8
+
+
08
+
+
8
+
┬тюф ЎшЇЁ√ 8. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, + ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 8.
+
9
+
+
09
+
+
9
+
┬тюф ЎшЇЁ√ 9. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, + ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш 9.
+
10
+
+
0A
+
+
, (чря Єр )
+
┬тюф фхё Єшўэющ чря Єющ.┬ ёюўхЄрэшш ё ъыртш°рьш + ╩, ╧, ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш A.
+
11
+
+
0B
+
+
/-/
+
╩ыртш°р юяхЁрЎшш ёьхэ√ чэрър ўшёыр ш ёЄхяхэш. + ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш + B.
+
12
+
+
0C
+
+
┬╧
+
┬тюфр яюЁ фър ўшёыр. ┬ ёюўхЄрэшш ё ъыртш°рьш + ╩, ╧, ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш C.
+
13
+
+
0D
+
+
Cx
+
╤сЁюё ЁхушёЄЁр X т эюы№ шыш юЄьхэр эрцшЄш  + ъыртш°ш F. ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє + ярь Єш D.
+
14
+
+
0E
+
+
╤ЄЁхыър ттхЁї
+
╬ъюэўрэшх ттюфр ўшёыр ш ёфтшур + хую ъюяшш т ЁхушёЄЁ Y. ╤фтшу ёюфхЁцшьюую ЁхушёЄЁют ёЄхър яЁюшёїюфшЄ яю ёїхьх: + X->Y->Z->T. ╤юфхЁцшьюх ЁхушёЄЁр Ёхчєы№ЄрЄр яЁхф√фє∙хщ юяхЁрЎшш X1 - эх шчьхэ хЄё . + ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш + E.
+
15
+
+
0F
+
+
F, ┬ї
+
╬яхЁрЎш  тюёЄрэютыхэш  яЁхф√фє∙хую + Ёхчєы№ЄрЄр шч ЁхушёЄЁр X (X=X1).
+
16
+
+
10
+
+
+
+
╤ыюцхэшх ёюфхЁцшьюую ЁхушёЄЁр X ё ёюфхЁцшь√ь + ЁхушёЄЁр Y ш яхЁхфрўш Ёхчєы№ЄрЄр т ЁхушёЄЁ X. ─тєїьхёЄэр  + юяхЁрЎш . ╧ЁюшёїюфшЄ юсьхэ ёюфхЁцшь√ь ЁхушёЄЁют ёЄхър яю ёїхьх + T=T->Z->Y X=Ёхчєы№ЄрЄ, X1=яЁхф√фє∙хьє ёюфхЁцшьюьє ЁхушcЄЁр X.
+
17
+
+
11
+
+
-
+
┬√ўшЄрэшх шч ёюфхЁцшьюую ЁхушёЄЁр Y ёюфхЁцшьюую + ЁхушёЄЁр X ш яхЁхфрўш Ёхчєы№ЄрЄр т ЁхушёЄЁ X. ─тєїьхёЄэр  + юяхЁрЎш .╤їхьр юсьхэр ЁхушёЄЁют ёЄхър - ъръ ш фы  юяхЁрЎшш ёыюцхэш . + ┬ ёюўхЄрэшш ё ъыртш°рьш ╩, ╧, ╚╧ ш фЁєушьш - юсЁр∙хэшх ъ ЁхушёЄЁє ярь Єш + F.
+
18
+
+
12
+
+
X (єьэюцшЄ№)
+
╙ьэюцхэшх ёюфхЁцшьюую ЁхушёЄЁр Y эр ёюфхЁцшьюх + ЁхушёЄЁр X ш яхЁхфрўш Ёхчєы№ЄрЄр т ЁхушёЄЁ X. ─тєїьхёЄэр  + юяхЁрЎш .
+
19
+
+
13
+
+
/ (фхыхэшх)
+
─хыхэшх ёюфхЁцшьюую ЁхушёЄЁр Y эр ёюфхЁцшьюх + ЁхушёЄЁр X ш яхЁхфрўр Ёхчєы№ЄрЄр т ЁхушёЄЁ X. ─тєїьхёЄэр  + юяхЁрЎш .
+
20
+
+
14
+
+
XY (ёЄЁхыъш)
+
╬сьхэ ёюфхЁцшь√ь ЁхушёЄЁют X ш + Y.
+
21
+
+
15
+
+
F, 10^x
+
┬√ўшёыхэшх ёЄхяхээющ ЇєэъЎшш 10 т ёЄхяхэш + x. ╬фэюьхёЄэр  юяхЁрЎш .╬яхЁрэф + эрїюфшЄё  т ЁхушёЄЁх X, Єєфр цх яюьх∙рхЄё  ш Ёхчєы№ЄрЄ. ╤юфхЁфшьюх ЁхушёЄЁют + ёЄхър Y, Z ш T эх ьхэ хЄё . ╠хэ хЄё  ёюфхЁцшьюх ЁхушёЄЁр X1, ъюЄюЁюх сєфхЄ + Ёртэю ёюфхЁцшьюьє ЁхушёЄЁр X фю т√яюыэхэш  юяхЁрЎшш.
+
22
+
+
16
+
+
F, e^x
+
┬√ўшёыхэшх яюърчрЄхы№эющ ЇєэъЎшш e т ёЄхяхэш + x. ╬фэюьхёЄэр  юяхЁрЎш .
+
23
+
+
17
+
+
F, lg
+
┬√ўшёыхэшх фхё Єшўэюую ыюурЁшЇьр. ╬фэюьхёЄэр  + юяхЁрЎш .
+
24
+
+
18
+
+
F, ln
+
┬√ўшёыхэшх эрЄєЁры№эюую ыюурЁшЇьр. ╬фэюьхёЄэр  + юяхЁрЎш .
+
25
+
+
19
+
+
F, arcsin
+
┬√ўшёыхэшх юсЁрЄэющ ЇєэъЎшш ёшэєёр. ╬фэюьхёЄэр  + юяхЁрЎш .
+
26
+
+
1A
+
+
F, arccos
+
┬√ўшёыхэшх юсЁрЄэющ ЇєэъЎшш ъюёшэєёр. ╬фэюьхёЄэр  + юяхЁрЎш .
+
27
+
+
1B
+
+
F, arctg
+
┬√ўшёыхэшх юсЁрЄэющ ЇєэъЎшш Єрэухэёр. ╬фэюьхёЄэр  + юяхЁрЎш .
+
28
+
+
1C
+
+
F, sin
+
┬√ўшёыхэшх ЇєэъЎшш ёшэєёр. ╬фэюьхёЄэр  + юяхЁрЎш .
+
29
+
+
1D
+
+
F, cos
+
┬√ўшёыхэшх ЇєэъЎшш ъюёшэєёр. ╬фэюьхёЄэр  + юяхЁрЎш .
+
30
+
+
1E
+
+
F, tg
+
┬√ўшёыхэшх ЇєэъЎшш Єрэухэёр. ╬фэюьхёЄэр  + юяхЁрЎш .
+
31
+
+
1F
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
32
+
+
20
+
+
F, PI
+
╟руЁєчър ўшёыр яш = 3,1415926 т ЁхушёЄЁ X. + ╬фэюьхёЄэр  юяхЁрЎш .
+
33
+
+
21
+
+
F, sqr
+
╚чтыхўхэшх ътфЁрЄэюую ъюЁэ  шч ёюфхЁцшьюую + ЁхушёЄЁр X. ╬фэюьхёЄэр  юяхЁрЎш .
+
34
+
+
22
+
+
F, x^2
+
┬ючтхфхэшх т ёЄхяхэ№ 2 ёюфхЁцшьюую ЁхушёЄЁр + X. ╬фэюьхёЄэр  юяхЁрЎш . +
+
35
+
+
23
+
+
F, 1/X
+
┬√ўшёыхэшх юсЁрЄэющ тхышўшэ√ X.╬фэюьхёЄэр  + юяхЁрЎш .
+
36
+
+
24
+
+
F, x^y
+
+ ┬ючтхфхэшх ёюфхЁцшьюую ёюфхЁцшьюую ЁхушёЄЁр X т ёЄхяхэ№ ёюфхЁцшьюую + ёюфхЁцшьюую ЁхушёЄЁр Y. ─тєїьхёЄэр  + юяхЁрЎш .
+
37
+
+
25
+
+
F, ъЁєцюъ ёю ёЄЁхыърьш
+
╩юы№Ўхтюх яхЁхьх∙хэшх шэЇюЁьрЎшш т ёЄхъх яю + ёїхьх: X->X1, T->Z->Y->X, X1->T.
+
38
+
+
26
+
+
╩ + шыш + 0 9
+
╙уы√ т ЇюЁьрЄх + уЁрф., ьшэ, ёхъєэф√ т уЁрфєё√, фюыш уЁрфєёют (╠╩ 61).
+
39
+
+
27
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
40
+
+
28
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ],
+
41
+
+
29
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
42
+
+
2A
+
+
╩ XY шыш + 0 999
+
┬Ёхь  т ЇюЁьрЄх ╫╫,╠╠,╤╤ т + фюыш ўрёют (╠╩ 61).
+
43
+
+
2B
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
44
+
+
2C
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
45
+
+
2D
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
46
+
+
2E
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
47
+
+
2F
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
48
+
+
30
+
+
╩ 3 шыш + 0 999
+
┬Ёхь , фюыш ўрёют т ЇюЁьрЄ + ╫╫,╠╠,╤╤ (╠╩ 61).
+
49
+
+
31
+
+
╩ 4 шыш + |x|
+
Abs(x) (╠╩ 61).
+
50
+
+
32
+
+
╩ 5 шыш + чэ
+
sign(x) - чэръ ўшёыр (╠╩ 61).
+
51
+
+
33
+
+
╩ 6 шыш + 0 9
+
╙уы√ т уЁрфєёрї ш фюы ї юэ√ї, + т уЁ, ьшэ, ёхъ (╠╩ 61).
+
52
+
+
34
+
+
╩ 7 шыш + [x]
+
┬√фхыхэшх Ўхыющ ўрёЄш (╠╩ + 61).
+
53
+
+
35
+
+
╩ 8 шыш + {x}
+
┬√фхыхэшх фЁюсэющ ўрёЄш (╠╩ + 61).
+
54
+
+
36
+
+
╩ 9 шыш + max
+
╬яЁхфхыхэшх ьръёшьры№эюую + чэрўхэш  фтєї ўшёхы т ЁхушёЄЁрї X ш Y (фтєїьхёЄэр  юяхЁрЎш ) (╠╩ 61).
+
55
+
+
37
+
+
╩ , шыш
+ яхЁхтхЁэєЄр  V
+
╧юЁрчЁ фэюх ыюушўхёъюх єьэюцхэшх + (ыюушўхёъюх ╚, фтєїьхёЄэр  юяхЁрЎш ) (╠╩ 61).
+
56
+
+
38
+
+
╩ /-/ шыш + V
+
╧юЁрчЁ фэюх ыюушўхёъюх ёыюцхэшх + (ыюушўхёъюх ╚╦╚, фтєїьхёЄэр  юяхЁрЎш ) (╠╩ 61).
+
57
+
+
39
+
+
╩ ┬╧ шыш + ъЁхёЄшъ т ъЁєцюўъх
+
╦юушўхёър  юяхЁрЎш  "╚ёъы■ў. + ╚╦╚" (фтєїьхёЄэр  юяхЁрЎш ) (╠╩ 61).
+
58
+
+
3A
+
+
╩ Cx шыш + шэт
+
╦юушўхёър  юяхЁрЎш  "╚этхЁёш " + (╠╩ 61).
+
59
+
+
3B
+
+
ёЄЁхыър ттхЁї + шыш ёў
+
├хэхЁрЎш  яёхтфюёыєўрщэюую + ўшёыр 0...1(╠╩ 61).
+
60
+
+
3C
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
61
+
+
3D
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
62
+
+
3E
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
63
+
+
3F
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
64
+
+
40
+
+
╧, 0
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 0.
+
65
+
+
41
+
+
╧, 1
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 1.
+
66
+
+
42
+
+
╧, 2
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 2.
+
67
+
+
43
+
+
╧, 3
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 3.
+
68
+
+
44
+
+
╧, 4
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 4.
+
69
+
+
45
+
+
╧, 5
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 5.
+
70
+
+
46
+
+
╧, 6
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 6.
+
71
+
+
47
+
+
╧, 7
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 7.
+
72
+
+
48
+
+
╧, 8
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 8.
+
73
+
+
49
+
+
╧, 9
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + 9.
+
74
+
+
4A
+
+
╧, A
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + A.
+
75
+
+
4B
+
+
╧, B
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + B.
+
76
+
+
4C
+
+
╧, C
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + C.
+
77
+
+
4D
+
+
╧, D
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + D.
+
78
+
+
4E
+
+
╧, E
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + E.
+
79
+
+
4F
+
+
╧, F
+
╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ ярь Єш + F.
+
80
+
+
50
+
+
╤/╧
+
1. ╩юьрэфр яЁхъЁр∙хэш  т√яюыэхэш  яЁюуЁрьь√ + т Ёхцшьх "╧ЁюуЁрььшЁютрэшх" ш ЇшъёрЎш  ёюфхЁцшьюую ЁхушёЄЁр X эр шэфшърЄюЁх.
+ 2. ╩юьрэфр эрўрыр т√ўшёыхэш  яю яЁюуЁрььх т Ёхцшьх "└тЄюьрЄшўхёър  ЁрсюЄр", + р Єръцх яЁхЁ√трэш  т√ўшёыхэшщ (эряЁьхЁ, т ёыєўрх чрЎшъыштрэш ).
+
81
+
+
51
+
+
┴╧
+
╩юьрэфр схчєёыютэюую + яхЁхїюфр яю ёыхфє■∙хьє чр эхщ рфЁхёє.
+
82
+
+
52
+
+
┬/╬
+
╩юьрэфр + тючтЁрЄр шч яюфяЁюуЁрьь√ . ┼ёыш яюфяЁюуЁрььр эх т√чтрырё№, - яхЁхїюф + эр эєыхтющ рфЁхё (т Ёхцшьх "└тЄюьрЄшўхёър  ЁрсюЄр").
+
83
+
+
53
+
+
╧╧
+
╩юьрэфр + т√чютр яюфяЁюуЁрьь√ . ╧юёых ттюфр ъюьрэф√ ёыхфєхЄ ттхёЄш рфЁхё эрўрыр + яюфяЁюуЁрьь√. ┬ Ёхцшьх "└тЄюьрЄшўхёър  ЁрсюЄр", ъюуфр яЁюуЁрььр + эх т√яюыэ хЄё , эрцрЄшх эр ъыртш°є ╧╧ яЁюшчтюфшЄ яю°руютюх т√яюыэхэшх яЁюуЁрьь√. +
+
84
+
+
54
+
+
╩, ═╬╧
+
╩юьрэфр "═хЄ юяхЁрЎшш", эшўхую эх + т√яюыэ хЄ.
+
85
+
+
55
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
86
+
+
56
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
87
+
+
57
+
+
F, x!=0
+
╩юьрэфр + яхЁхїюфр яю єёыютш■. ┼ёыш єёыютшх эх т√яюыэ хЄё , + Єю сєфхЄ юёє∙хёЄты╕э яхЁхїюф яю тїюф ∙хьє т ъюьрэфє рфЁхёє.
+
88
+
+
58
+
+
F, L2
+
╩юьрэфр + Ўшъыр ё ЁхушёЄЁюь RG2. (ёь. эшцх фы  F, L0)
+
89
+
+
59
+
+
F, x>=0
+
╩юьрэфр + яхЁхїюфр яю єёыютш■. ┼ёыш єёыютшх эх т√яюыэ хЄё , + Єю сєфхЄ юёє∙хёЄты╕э яхЁхїюф яю тїюф ∙хьє т ъюьрэфє рфЁхёє.
+
90
+
+
5A
+
+
F, L3
+
╩юьрэфр + Ўшъыр ё ЁхушёЄЁюь RG3. (ёь. эшцх фы  F, L0)
+
91
+
+
5B
+
+
F, L1
+
╩юьрэфр + Ўшъыр ё ЁхушёЄЁюь RG1. (ёь. эшцх фы  F, L0)
+
92
+
+
5C
+
+
F, x<0
+
╩юьрэфр + яхЁхїюфр яю єёыютш■. ┼ёыш єёыютшх эх т√яюыэ хЄё , + Єю сєфхЄ юёє∙хёЄты╕э яхЁхїюф яю тїюф ∙хьє т ъюьрэфє рфЁхёє.
+
93
+
+
5D
+
+
F, L0
+
╩юьрэфр Ўшъыр + ё ЁхушёЄЁюь RG0. ┬ ъюьрэфє тїюфшЄ ёыхфє■∙шщ чр эхщ рфЁхё яхЁхїюфр. ╤юфхЁцшьюх + ЁхушёЄЁр ярь Єш 0 єьхэ№°рхЄё  эр хфшэшЎє, ш яюър эх ёЄрэхЄ Ёртэ√ь эєы■, + юёє∙хёты хЄё  яхЁхїюф яю рфЁхёє, тїюф ∙хьє т ъюьрэфє.
+
94
+
+
5E
+
+
F, x=0
+
╩юьрэфр + яхЁхїюфр яю єёыютш■. ┼ёыш єёыютшх эх т√яюыэ хЄё , + Єю сєфхЄ юёє∙хёЄты╕э яхЁхїюф яю тїюф ∙хьє т ъюьрэфє рфЁхёє.
+
95
+
+
5F
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
96
+
+
60
+
+
╚╧, 0
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 0 т ЁхушёЄЁ + X.
+
97
+
+
61
+
+
╚╧, 1
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 1 т ЁхушёЄЁ + X.
+
98
+
+
62
+
+
╚╧, 2
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 2 т ЁхушёЄЁ + X.
+
99
+
+
63
+
+
╚╧, 3
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 3 т ЁхушёЄЁ + X.
+
100
+
+
64
+
+
╚╧, 4
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 4 т ЁхушёЄЁ + X.
+
101
+
+
65
+
+
╚╧, 5
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 5 т ЁхушёЄЁ + X.
+
102
+
+
66
+
+
╚╧, 6
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 6 т ЁхушёЄЁ + X.
+
103
+
+
67
+
+
╚╧, 7
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 7 т ЁхушёЄЁ + X.
+
104
+
+
68
+
+
╚╧, 8
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 8 т ЁхушёЄЁ + X.
+
105
+
+
69
+
+
╚╧, 9
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш 9 т ЁхушёЄЁ + X.
+
106
+
+
6A
+
+
╚╧, A
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш A т ЁхушёЄЁ + X.
+
107
+
+
6B
+
+
╚╧, B
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш B т ЁхушёЄЁ + X.
+
108
+
+
6C
+
+
╚╧, C
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш C т ЁхушёЄЁ + X.
+
109
+
+
6D
+
+
╚╧, D
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш D т ЁхушёЄЁ + X.
+
110
+
+
6E
+
+
╚╧, E
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш + E т ЁхушёЄЁ X.
+
111
+
+
6F
+
+
╚╧, F
+
┬√чют ёюфхЁцшьюую ЁхушёЄЁр ярь Єш F т ЁхушёЄЁ + X.
+
112
+
+
70
+
+
╩, x!=0, 0
+
╩юётхээ√щ + єёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх + ярь Єш 0.
+
113
+
+
71
+
+
╩, x!=0, 1
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 1.
+
114
+
+
72
+
+
╩, x!=0, 2
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 2.
+
115
+
+
73
+
+
╩, x!=0, 3
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 3.
+
116
+
+
74
+
+
╩, x!=0, 4
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 4.
+
117
+
+
75
+
+
╩, x!=0, 5
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 5.
+
118
+
+
76
+
+
╩, x!=0, 6
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 6.
+
119
+
+
77
+
+
╩, x!=0, 7
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 7.
+
120
+
+
78
+
+
╩, x!=0, 8
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 8.
+
121
+
+
79
+
+
╩, x!=0, 9
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 9.
+
122
+
+
7A
+
+
╩, x!=0, A
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш A.
+
123
+
+
7B
+
+
╩, x!=0, B
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш B.
+
124
+
+
7C
+
+
╩, x!=0, C
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш C.
+
125
+
+
7D
+
+
╩, x!=0, D
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш D.
+
126
+
+
7E
+
+
╩, x!=0, E
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш E.
+
127
+
+
7F
+
+
╩, x!=0, F
+
└эрыюушўэю ╩, x!=0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш F.
+
128
+
+
80
+
+
╩, ┴╧, 0
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 0.
+
129
+
+
81
+
+
╩, ┴╧, 1
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 1.
+
130
+
+
82
+
+
╩, ┴╧, 2
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 2.
+
131
+
+
83
+
+
╩, ┴╧, 3
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 3.
+
132
+
+
84
+
+
╩, ┴╧, 4
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 4.
+
133
+
+
85
+
+
╩, ┴╧, 5
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 5.
+
134
+
+
86
+
+
╩, ┴╧, 6
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 6.
+
135
+
+
87
+
+
╩, ┴╧, 7
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 7.
+
136
+
+
88
+
+
╩, ┴╧, 8
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 8.
+
137
+
+
89
+
+
╩, ┴╧, 9
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш 9.
+
138
+
+
8A
+
+
╩, ┴╧, A
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш A.
+
139
+
+
8B
+
+
╩, ┴╧, B
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш B.
+
140
+
+
8C
+
+
╩, ┴╧, C
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш C.
+
141
+
+
8D
+
+
╩, ┴╧, D
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш D.
+
142
+
+
8E
+
+
╩, ┴╧, E
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш E.
+
143
+
+
8F
+
+
╩, ┴╧, F
+
╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє + рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх ярь Єш F.
+
144
+
+
90
+
+
╩, x>=0, 0
+
╩юётхээ√щ + єёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх + ярь Єш 0.
+
145
+
+
91
+
+
╩, x>=0, 1
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш 1.
+
146
+
+
92
+
+
╩, x>=0, 2
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш 2.
+
147
+
+
93
+
+
╩, x>=0, 3
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш 3.
+
148
+
+
94
+
+
╩, x>=0, 4
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш 4.
+
149
+
+
95
+
+
╩, x>=0, 5
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш 5.
+
150
+
+
96
+
+
╩, x>=0, 6
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш 6.
+
151
+
+
97
+
+
╩, x>=0, 7
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш 7.
+
152
+
+
98
+
+
╩, x>=0, 8
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш 8.
+
153
+
+
99
+
+
╩, x>=0, 9
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш 9.
+
154
+
+
9A
+
+
╩, x>=0, A
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш A.
+
155
+
+
9B
+
+
╩, x>=0, B
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш B.
+
156
+
+
9C
+
+
╩, x>=0, C
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш C.
+
157
+
+
9D
+
+
╩, x>=0, D
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш D.
+
158
+
+
9E
+
+
╩, x>=0, E
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш E.
+
159
+
+
9F
+
+
╩, x>=0, F
+
└эрыюушўэю ╩, x>=0, 0, Єюы№ъю + ё ЁхушёЄЁюь ярь Єш F.
+
160
+
+
A0
+
+
╩, ╧╧, 0
+
╩юьрэфр ъюётхээюую т√чютр яЁюфяЁюуЁрьь√, рфЁхё + ъюЄюЁющ чряшёрэ т ЁхушёЄЁх ярь Єш 0. ╧хЁхф т√чютюь ЁхушёЄЁ ьюфшЇшЎшЁєхЄё  + ёюуырёэю ЄрсышЎх ьюфшЇшърЎшш
+
161
+
+
A1
+
+
╩, ╧╧, 1
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + 1.
+
162
+
+
A2
+
+
╩, ╧╧, 2
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + 2.
+
163
+
+
A3
+
+
╩, ╧╧, 3
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + 3.
+
164
+
+
A4
+
+
╩, ╧╧, 4
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + 4.
+
165
+
+
A5
+
+
╩, ╧╧, 5
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + 5.
+
166
+
+
A6
+
+
╩, ╧╧, 6
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + 6.
+
167
+
+
A7
+
+
╩, ╧╧, 7
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + 7.
+
168
+
+
A8
+
+
╩, ╧╧, 8
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + 8.
+
169
+
+
A9
+
+
╩, ╧╧, 9
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + 9.
+
170
+
+
AA
+
+
╩, ╧╧, A
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр + ЁхушёЄЁюь A.
+
171
+
+
AB
+
+
╩, ╧╧, B
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + B.
+
172
+
+
AC
+
+
╩, ╧╧, C
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр + ЁхушёЄЁюь C.
+
173
+
+
AD
+
+
╩, ╧╧, D
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + D.
+
174
+
+
AE
+
+
╩, ╧╧, E
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + E.
+
175
+
+
AF
+
+
╩, ╧╧, F
+
└эрыюушўэю ╩, ╧╧, 0, эю ё ёт чрэр ЁхушёЄЁюь + F.
+
176
+
+
B0
+
+
╩, ╧, 0
+
╩юьрэфр + ъюётхээющ чряшёш ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ, эр ъюЄюЁ√щ єъч√трхЄ + ёюфхЁцшьюх ЁхушёЄЁр 0. ╤юфхЁцшьюх ЁхушёЄЁр 0 ьюфшЇшЎшЁєхЄё  ёюуырёэю ЄрсышЎх + ьюфшЇшърЎшш.
+
177
+
+
B1
+
+
╩, ╧, 1
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 0.
+
178
+
+
B2
+
+
╩, ╧, 2
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 0.
+
179
+
+
B3
+
+
╩, ╧, 3
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 0.
+
180
+
+
B4
+
+
╩, ╧, 4
+
╩юьрэфр ъюётхээющ чряшёш ёюфхЁцшьюую ЁхушёЄЁр + X т ЁхушёЄЁ, эр ъюЄюЁ√щ єъч√трхЄ ёюфхЁцшьюх ЁхушёЄЁр 4. ╤юфхЁцшьюх ЁхушёЄЁр + 4 ьюфшЇшЎшЁєхЄё  ёюуырёэю ЄрсышЎх + ьюфшЇшърЎшш.
+
181
+
+
B5
+
+
╩, ╧, 5
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 4.
+
182
+
+
B6
+
+
╩, ╧, 6
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 4.
+
183
+
+
B7
+
+
╩, ╧, 7
+
╩юьрэфр чряшёш ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ, + эр ъюЄюЁ√щ єъч√трхЄ ёюфхЁцшьюх ЁхушёЄЁр 7. ╤юфхЁцшьюх ЁхушёЄЁр 7 ьюфшЇшЎшЁєхЄё  + ёюуырёэю ЄрсышЎх ьюфшЇшърЎшш.
+
184
+
+
B8
+
+
╩, ╧, 8
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 7.
+
185
+
+
B9
+
+
╩, ╧, 9
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ 7.
+
186
+
+
BA
+
+
╩, ╧, A
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 7.
+
187
+
+
BB
+
+
╩, ╧, B
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 7.
+
188
+
+
BC
+
+
╩, ╧, C
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 7.
+
189
+
+
BD
+
+
╩, ╧, D
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 7.
+
190
+
+
BE
+
+
╩, ╧, E
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 7.
+
191
+
+
BF
+
+
╩, ╧, F
+
╩юьрэфр рэрыюушўэр ъюьрэфх ╩ ╧ + 7.
+
192
+
+
C0
+
+
╩, x<0, 0
+
╩юётхээ√щ + єёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх + ярь Єш 0.
+
193
+
+
C1
+
+
╩, x<0, 1
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 1.
+
194
+
+
C2
+
+
╩, x<0, 2
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 2.
+
195
+
+
C3
+
+
╩, x<0, 3
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 3.
+
196
+
+
C4
+
+
╩, x<0, 4
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 4.
+
197
+
+
C5
+
+
╩, x<0, 5
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 5.
+
198
+
+
C6
+
+
╩, x<0, 6
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 6.
+
199
+
+
C7
+
+
╩, x<0, 7
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 7.
+
200
+
+
C8
+
+
╩, x<0, 8
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 8.
+
201
+
+
C9
+
+
╩, x<0, 9
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш 9.
+
202
+
+
CA
+
+
╩, x<0, A
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш A.
+
203
+
+
CB
+
+
╩, x<0, B
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш B.
+
204
+
+
CC
+
+
╩, x<0, C
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш C.
+
205
+
+
CD
+
+
╩, x<0, D
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш D.
+
206
+
+
CE
+
+
╩, x<0, E
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш E.
+
207
+
+
CF
+
+
╩, x<0, F
+
└эрыюушўэю ╩, x<0, 0, Єюы№ъю ё ЁхушёЄЁюь + ярь Єш F.
+
208
+
+
D0
+
+
╩, ╚╧, 0
+
╩юьрэфр ъюётхээюую + ўЄхэш  ЁхушёЄЁр , эюьхЁ ъюЄюЁюую эрїюфшЄё  т ЁхушёЄЁх RG0. ╤юфхЁцшьюх + ЁхушёЄЁр 0 тэрўрых ьюфшЇшЎшЁєхЄё  ёюуырёэю ЄрсышЎх + ьюфшЇшърЎшш, яюёых ўхую яЁюшёїюфшЄ ўЄхэшх ёююЄтхЄёЄтє■∙хую ЁхушёЄЁр.
+
209
+
+
D1
+
+
╩, ╚╧, 1
+
(╩ръ ш фы  ╩, ╚╧, 0, Єюы№ъю ё + ЁхушёЄЁюь RG1.)
+
210
+
+
D2
+
+
╩, ╚╧, 2
+
(╩ръ ш фы  ╩, ╚╧, 0, Єюы№ъю ё ЁхушёЄЁюь RG2.)
+
211
+
+
D3
+
+
╩, ╚╧, 3
+
(╩ръ ш фы  ╩, ╚╧, 0, Єюы№ъю ё ЁхушёЄЁюь RG3.)
+
212
+
+
D4
+
+
╩, ╚╧, 4
+
╩юьрэфр ъюётхээюую + ўЄхэш  ЁхушёЄЁр , эюьхЁ ъюЄюЁюую эрїюфшЄё  т ЁхушёЄЁх RG4. ╤юфхЁцшьюх + ЁхушёЄЁр 4 тэрўрых ьюфшЇшЎшЁєхЄё  ёюуырёэю ЄрсышЎх + ьюфшЇшърЎшш, яюёых ўхую яЁюшёїюфшЄ ўЄхэшх ёююЄтхЄёЄтє■∙хую ЁхушёЄЁр.
+
213
+
+
D5
+
+
╩, ╚╧, 5
+
(╩ръ ш фы  ╩, ╚╧, 4, Єюы№ъю ё ЁхушёЄЁюь RG5.)
+
214
+
+
D6
+
+
╩, ╚╧, 6
+
(╩ръ ш фы  ╩, ╚╧, 4, Єюы№ъю ё ЁхушёЄЁюь RG6.)
+
215
+
+
D7
+
+
╩, ╚╧, 7
+
╩юьрэфр ъюётхээюую + ўЄхэш  ЁхушёЄЁр , эюьхЁ ъюЄюЁюую эрїюфшЄё  т ЁхушёЄЁх RG7. ╤юфхЁцшьюх + ЁхушёЄЁр 7 тэрўрых ьюфшЇшЎшЁєхЄё  ёюуырёэю ЄрсышЎх + ьюфшЇшърЎш, (т фрээюь ёыєўрх эх ьюфшЇшЎшЁєхЄё ), яюёых ўхую яЁюшёїюфшЄ + ўЄхэшх ёююЄтхЄёЄтє■∙хую ЁхушёЄЁр.
+
216
+
+
D8
+
+
╩, ╚╧, 8
+
(╩ръ ш фы  ╩, ╚╧, 7, Єюы№ъю ё ЁхушёЄЁюь RG8.)
+
217
+
+
D9
+
+
╩, ╚╧, 9
+
(╩ръ ш фы  ╩, ╚╧, 7, Єюы№ъю ё ЁхушёЄЁюь RG9.)
+
218
+
+
DA
+
+
╩, ╚╧, A
+
(╩ръ ш фы  ╩, ╚╧, 7, Єюы№ъю ё ЁхушёЄЁюь A.)
+
219
+
+
DB
+
+
╩, ╚╧, B
+
(╩ръ ш фы  ╩, ╚╧, 7, Єюы№ъю ё ЁхушёЄЁюь B.)
+
220
+
+
DC
+
+
╩, ╚╧, C
+
(╩ръ ш фы  ╩, ╚╧, 7, Єюы№ъю ё ЁхушёЄЁюь C.)
+
221
+
+
DD
+
+
╩, ╚╧, D
+
(╩ръ ш фы  ╩, ╚╧, 7, Єюы№ъю ё ЁхушёЄЁюь D.)
+
222
+
+
DE
+
+
╩, ╚╧, E
+
(╩ръ ш фы  ╩, ╚╧, 7, Єюы№ъю ё ЁхушёЄЁюь E.)
+
223
+
+
DF
+
+
╩, ╚╧, F
+
(╩ръ ш фы  ╩, ╚╧, 7, Єюы№ъю ё ЁхушёЄЁюь F.)
+
224
+
+
E0
+
+
╩, x=0, 0
+
╩юётхээ√щ + єёыютэ√щ яхЁхїюф яю ьюфшЇшЎшЁютрээюьє рфЁхёє, ъюЄюЁ√щ эрїюфшЄё  т ЁхушёЄЁх + ярь Єш 0.
+
225
+
+
E1
+
+
╩, x=0, 1
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + 1.
+
226
+
+
E2
+
+
╩, x=0, 2
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + 2.
+
227
+
+
E3
+
+
╩, x=0, 3
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + 3.
+
228
+
+
E4
+
+
╩, x=0, 4
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + 4.
+
229
+
+
E5
+
+
╩, x=0, 5
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + 5.
+
230
+
+
E6
+
+
╩, x=0, 6
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + 6.
+
231
+
+
E7
+
+
╩, x=0, 7
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + 7.
+
232
+
+
E8
+
+
╩, x=0, 8
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + 8.
+
233
+
+
E9
+
+
╩, x=0, 9
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + 9.
+
234
+
+
EA
+
+
╩, x=0, A
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + A.
+
235
+
+
EB
+
+
╩, x=0, B
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + B.
+
236
+
+
EC
+
+
╩, x=0, C
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + C.
+
237
+
+
ED
+
+
╩, x=0, D
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + D.
+
238
+
+
EE
+
+
╩, x=0, E
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + E.
+
239
+
+
EF
+
+
╩, x=0, F
+
└эрыюушўэю ╩, x=0, 0, Єюы№ъю ё ЁхушёЄЁюь ярь Єш + F.
+
240
+
+
F0
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
241
+
+
F1
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
242
+
+
F2
+
+
K HEX
+
╚эфшърЎш  ЁхушёЄЁр X т °хёЄэрфЎшЄшЁшўэюь + тшфх
+
243
+
+
F3
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
244
+
+
F4
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
245
+
+
F5
+
+
F, ╧╨├
+
┬ Ёхцшьх "╧юуЁрььшЁютрэшх" + - шэёЄЁєъЎш  т√тюфр ёюфхЁцшьюую ЁхушёЄЁр X т Їрщы .
+
246
+
+
F6
+
+
F, CF
+
┬ Ёхцшьх "╧юуЁрььшЁютрэшх" + - шэёЄЁєъЎш  т√тюфр ёюфхЁцшьюую ЁхушёЄЁр X т Їрщы ё фюсртыхэшхь ёшьтюыют + яхЁхтюфр ёЄЁюъш (\r\n).
+
247
+
+
F7
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
248
+
+
F8
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
249
+
+
F9
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
250
+
+
FA
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
251
+
+
FB
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
252
+
+
FC
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
253
+
+
FD
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
254
+
+
FE
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+
255
+
+
FF
+
+
[юЄёєЄёЄтєхЄ]
+
[юЄёєЄёЄтєхЄ]
+

<< эр эрўрыю

+

5 May, 2002 3:01

+ + diff --git a/programs/emulator/PrMK/trunk/docs/b3-34help2.htm b/programs/emulator/PrMK/trunk/docs/b3-34help2.htm new file mode 100644 index 0000000000..9df3be51d2 --- /dev/null +++ b/programs/emulator/PrMK/trunk/docs/b3-34help2.htm @@ -0,0 +1,236 @@ + + +┴3-34 - яЁюуЁрььр + + + + + + + + + + +
┬эшьрэшх! ─рээ√щ + фюъєьхэЄ эрїюфшЄё  т яЁюЎхёёх ЁрчЁрсюЄъш ш ьюцхЄ ёюфхЁцрЄ№ ю°шсъш. 
+

╩ры№ъєы ЄюЁ ┴3-34.
+
╩ЁрЄъюх ЁєъютюфёЄтю. + ╥рсышЎр ъюьрэф.
+ ╬яшёрэшх яЁюуЁрьь√
(¤ЄюЄ + Їрщы).

+
╬яшёрэшх яЁюуЁрьь√.

+

 

+ + + + +
+

┬эх°эшщ тшф.

+
    +
  • ╦шэхщър рфЁхёр. ╧Ёхфэрчэрўхэр фы  шэфшърЎшш Єхъє∙хую рфЁхёр яЁюуЁрьь√. + ╠юцхЄ с√Є№ юЄъы■ўхэр ёююЄтхЄёЄтє■∙хщ єёЄрэютъющ яЁюуЁрьь√ шч ьхэ■ "╙ёЄрэютъш".
  • +
  • ╧юых ЄхъёЄютюую ёююс∙хэш . ╧Ёхфэрчэрўхэю фы  ёююс∙хэш  юс ю°шсъх шыш + юс юёюсюь ёюёЄю эшш ъры№ъєы ЄюЁр.
  • +
  • ┬ъы■ўрЄхы№ яшЄрэш . ╬ўш∙р■Єё  тёх ЁхушёЄЁ√, ёЄхъ ш ёЄхъ тючтЁрЄр. + ╧ЁюуЁрььр яЁш юЄъы■ўхэшш яшЄрэш  эх шчьхэ хЄё .
  • +
  • ╧хЁхъы■ўрЄхы№ Ёрфшрэ√ - уЁрфєё√. ╧ЁхфёЄртыхэшх єуыют фы  юяхЁрЎшщ + ё sin, cos, tg, arcsin, arccos, arctg.
  • +
  • ╚эфшърЄюЁ ┴3-34.
  • +
  • ╩ыртш°ш юЄ F фю ╤x (тёхую 30 °Є.). ─ы  ттюфр ъюьрэф.
  • +
  • ╥хъёЄютюх яюых фы  шэфшърЎшш Єхъє∙хую рфЁхёр яЁюуЁрьь√ т ЎшЇЁютюь + тшфх. ═рїюфшЄё  ёяЁртр юЄ ъыртш°ш ╧╧.
  • +
+
+
+ + + + +
+

╤юфхЁцрэшх ьхэ■ "╧ЁюуЁрььр".

+
    +
  • "═ютр " - ёючфрэшх эютющ яЁюуЁрьь√
  • +
  • "╧хЁхчруЁєчшЄ№" - чруЁєчшЄ№ Єхъ∙є■ яЁюуЁрььє шч ёюёЄртр + °ЄрЄэ√ї яЁюуЁрьь.
  • +
  • "╟руЁєчшЄ№" - чруЁєчшЄ№ яЁюуЁрььє шч ёюёЄртр °ЄрЄэ√ї яЁюуЁрьь.
  • +
  • "╤юїЁрэшЄ№ ъръ" - ёюїЁрэшЄ№ яЁюуЁрььє т ёюёЄртх °ЄрЄэ√ї + яюф эют√ь шьхэхь.
  • +
  • "╤юїЁрэшЄ№" - ёюїЁрэшЄ№ яЁюуЁрььє, хёыш юэр шьххЄё  т ёюёЄртх + °ЄрЄэ√ї ш ЄхъёЄ яЁюуЁрьь√ шчьхэшыё .
  • +
  • "╤юїЁрэшЄ№ тё╕" - ёюїЁрэшЄ№ яЁюуЁрььє, хёыш юэр шьххЄё  + т ёюёЄртх °ЄрЄэ√ї, х╕ ЁхушёЄЁ√, ёЄхъ ш ёЄхъ тючтЁрЄр.
  • +
  • "╤тющёЄтр" - т√чют юъэр ёю ётющёЄтрьш Єхъє∙хщ яЁюуЁрьь√.
  • +
  • "┬ ЄхъёЄ" - т√чют юъэр ЄЁрэёы Ўшш ъюфют яЁюуЁрьь√ т ЄхъёЄют√щ + ЇюЁьрЄ.
  • +
  • "╚ч ЄхъёЄр" - т√чют юъэр чруЁєчъш яЁюуЁрьь√ шч ЄхъЄютюую + Їрщыр.
  • +
  • "┬√тюф т Їрщы" - яюърчрЄ№ юъэю т√тюфр т Їрщы. ─юёЄєяэю яЁш + эрышўшш т√тхфхээюую ЄхъёЄр.
  • +
  • "╤ъюЁюёЄ№" - яюърчрЄ№ юъэю єёЄрэютюъ ёъюЁюёЄш т√яюыэхэш  + яЁюуЁрьь√.
  • +
  • "╨хушёЄЁ√" - яюърчрЄ№ юъэю ё ёюфхЁцшь√ь тёхї ЁхушёЄЁют.
  • +
  • "╙ёЄрэютъш" - яюърчрЄ№ юъэю ё юс∙шьш юяЎш ьш яЁюуЁрьь√.
  • +
  • "├юЁ ўр  ъыртш°р" - юъэю т√сюЁр ъыртш°ш ъюья№■ЄхЁр фы  чряєёър + яЁюуЁрьь√ "╩ры№ъєы ЄюЁ ┴3-34" шыш фЁєующ яЁюуЁрьь√.
  • +
  • "┬√їюф" - т√їюф шч яЁюуЁрьь√.
  • +
+

 

+
+
+ + + + +
+

╤юфхЁцрэшх ьхэ■ "╧Ёртър".

+
    +
  • "┬ёЄртшЄ№" - ъюьрэфр тёЄртъш ўшёыр шч ЄхъёЄютюую сєЇхЁр + юсьхэр (ёшёЄхь√).
  • +
  • "╩юяшЁютрЄ№" - ъюьрэфр ъюяшЁютрэш  ёюфхЁцшьюую ЁхэшёЄЁр + X (ўЄю тшфэю ш эр шэфшърЄюЁх) т ЄхъёЄют√щ сєЇхЁ юсьхэр ёшёЄхь√.
  • +
  • "╬ўшёЄшЄ№ ЁхушёЄЁ√" - юсэєы хЄ 16 ЁхушёЄЁют ярь Єш.
  • +
  • "╬ўшёЄшЄ№ ёЄхъ" - юсэєы хЄ тёх ЁхушёЄЁ√ ёЄхър.
  • +
  • "╬ўшёЄшЄ№ ёЄхъ тючтЁрЄр" - юсэєы хЄ ЁхушёЄЁ√ ёЄхър тючтЁрЄр.
  • +
  • "╬ўшёЄшЄ№ тё╕" - фхщёЄтєхЄ ъръ ш тъ√ы■ўрЄхы№ яшЄрэш . ╬ўш∙р■Єё  + тёх ЁхушёЄЁ√, ёЄхъ ш ёЄхъ тючтЁрЄр. ╧ЁюуЁрььр эх шчьхэ хЄё .
  • +
  • "╬ўшёЄшЄ№ яЁюуЁ. ярь Є№" - юўш∙рхЄ яЁюуЁрьэє■ ярь Є№.
  • +
  • "╤ыхфє■∙хх юъэю" - яхЁхъы■ўхэшх ьхцфє фхўхЁэшьш юъэрьш.
  • +
+
+
+ + + + +
+

╤юфхЁцрэшх ьхэ■ "╧юью∙№".

+
    +
  • "╧юью∙№" - т√чют Їрщыр яюью∙ш (b3-34help0.htm)
  • +
  • "╬ тхЁёшш ┴3-34" - ёююс∙хэшх юс шчьхэхэш ї шыш юёюсхээюёЄ ї + фрээющ тхЁёшш яЁюуЁрьь√.
  • +
  • "╧Ёю ¤Єю" - юс ртЄюЁх ¤Єющ (яюър эхфюфхырээющ) яЁюуЁрьь√.
  • +
  • "═р ёрщЄ ртЄюЁр" - фы  ёърўштрэш  яюёыхфэхщ тхЁёшш яЁюуЁрьь√.
  • +
  • "╬°шсъш" - ёююс∙хэш  юс ёюс√Єш ї т яЁюуЁрььх, ёыєцшЄ фы  + юЄырфъш яЁюуЁрьь√ b3_34.exe.
  • +
+
+
+ + + + +
+

╩ры№ъєы ЄюЁ шьххЄ:

+
    +
  • яЁюуЁрьэє■ ярь Є№ юс·╕ьюь т 100 шыш 256 °руют;
  • +
  • 16 рфЁхёєхь√ї ЁхушёЄЁют ярь Єш фы  їЁрэхэш  фрээ√ї шыш рфЁхёют яхЁхїюфр + т яЁюуЁрььх;
  • +
  • ъюьрэф√ яЁ ь√ї ш ъюётхээ√ї яхЁхїюфют т яЁюуЁрььх, ъюьрэф√ т√чютр + яюфяЁюуЁрь ш ъюьрэф√ тючтЁрЄр шч яюфяЁюуЁрь;
  • +
  • тючьюцэюёЄ№ юсЁр∙хэш  ъ яюфяЁюуЁрььх тэєЄЁш яюфяЁюуЁрь. ├ыєсшэр Єръшї + юсЁр∙хэшщ Ёртэр 5;
  • +
  • ъюьрэф√ яЁ ьюую ш ъюётхээюую схчєёыютэюую яхЁхїюфр;
  • +
  • ўхЄ√Ёх Єшяр ъюьрэф яЁ ьюую ш ъюётхээюую єёыютэюую яхЁхїюфр (яю єёыютш ь + x=0, x!=0 (эх Ёртэю 0), x>=0 (сюы№°х шыш Ёртэ хЄё  0), x<0);
  • +
  • ъюьрэф√ юЁурэшчрЎшш Ўшъыют;
  • +
  • ъюьрэф√ ъюётхээющ чряшёш ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ√ ярь Єш;
  • +
  • ъюьрэф√ ъюётхээющ шэфшърЎшш ёюфхЁцшьюую ЁхушёЄЁют ярь Єш;
  • +
  • ъюьрэф√ ёсЁюёр ёў╕Єўшър рфЁхёют т эєыхтюх ёюёЄю эшх;
  • +
  • ъюьрэфр яєёър ш юёЄрэютъш яЁш ртЄюьрЄшўхёъюь т√ўшёыхэшш яю яЁюуЁрььх;
  • +
  • ъюьрэфр яю°руютюую т√яюыэхэш  яЁюуЁрьь√ т Ёхцшьх "└тЄюьрЄшўхёър  ЁрсюЄр";
  • +
  • шэфшърЎш  ъюфют ЄЁ╕ї яюёыхфютрЄхы№э√ї °руют яЁюуЁрьь√ ш Єхъє∙хую ёюёЄю эш  + ёў╕Єўшър рфЁхёют;
  • +
  • ъыртш°ш яю°руютюую яЁюёьюЄЁр яЁюуЁрьь√ т ёЄюЁюэє єтхышўхэш  шыш єьхэ№°хэш  + рфЁхёют т Ёхцшьх "╧ЁюуЁрььшЁютрэшх";
  • +
  • ъюьрэфр т√тюфр Ёхчєы№ЄрЄют т Їрщы фы  яюёыхфє■∙хщ яхўрЄш эр яЁшэЄхЁх.
    +
    +
  • +
+
+
+ + + + +
+

╙ёЄрэютъш яЁюуЁрьь√.

+
    +
  • "╤сЁюё ъры№ъєы ЄюЁр яЁш т√ъы■ўхэшш яшЄрэш " - ёсЁюё тёхї + ЁхушёЄЁют.
  • +
  • "╨рээхх юсэрЁєцхэшх ю°шсюъ" - .
  • +
  • "╧Ёю ¤Єю" - юс ртЄюЁх ¤Єющ (яюър эхфюфхырээющ) яЁюуЁрьь√.
  • +
  • "═р ёрщЄ ртЄюЁр" - фы  ёърўштрэш  яюёыхфэхщ тхЁёшш яЁюуЁрьь√.
  • +
  • "╬°шсъш" - ёююс∙хэш  юс ёюс√Єш ї т яЁюуЁрььх, ёыєцшЄ фы  + юЄырфъш яЁюуЁрьь√ b3_34.exe.
  • +
+
+

┬√яшёър шч яЁюуЁрьь√ ю эрчэрўхэшш ъыртш° єяЁртыхэш  ёю ёЄрэфрЁЄэющ + IBM ъыртшрЄєЁ√ фы  тхЁёшш яЁюуЁрьь√ 1.31.

+

{1,0x29,0,"ъыртш°р ` (~)","ъыртш°р ъры№ъєы ЄюЁр F (шэфхъё 0)"},//
+ {1,0x14D,1,"ъыртш°р ╤ЄЁхыър тяЁртю","ъры№ъєы ЄюЁр ╪├ тяЁртю (шэфхъё 1)"},//
+ {1,0x14B,2,"ъыртш°р ╤ЄЁхыър тыхтю","ъры№ъєы ЄюЁр ╪├ тыхтю (шэфхъё 2)"},//
+ {1,0x147,3,"ъыртш°р Home","ъыртш°р ъры№ъєы ЄюЁр ┬/╬ (шэфхъё 3)"},//
+ {1,0x14F,4,"ъыртш°р End","ъыртш°р ъры№ъєы ЄюЁр ╤/╧ (шэфхъё 4)"},//
+ {1,0x25,5,"ъыртш°р ырЄ. K","ъыртш°р ъры№ъєы ЄюЁр K (шэфхъё 5)"},//
+ {1,0x13,5,"ъыртш°р Ёєё. K","ъыртш°р ъры№ъєы ЄюЁр K (шэфхъё 5)"},//
+ {1,0x17,6,"ъыртш°р I","ъыртш°р ъры№ъєы ЄюЁр ╚╧ (шэфхъё 6)"},//
+ {1,0x19,7,"ъыртш°р ырЄ.P ","ъыртш°р ъры№ъєы ЄюЁр ╧ (шэфхъё 7)"},//
+ {1,0x22,7,"ъыртш°р Ёєё.╧(╦рЄ.G)","ъыртш°р ъры№ъєы ЄюЁр ╧ (шэфхъё 7)"},//
+ {1,0x33,8,"ъыртш°р Ёєё.┴(шыш чря Єр )","ъыртш°р ъры№ъєы ЄюЁр ┴╧ (шэфхъё 8)"},//
+ {1,0x1F,9,"ъыртш°р S ","ъыртш°р ъры№ъєы ЄюЁр ╧╧ (шэфхъё 9)"},//
+ {1,0x47,10,"ъыртш°р ╓шЇЁ. ъырт. 7 ","ъыртш°р ъры№ъєы ЄюЁр 7 (шэфхъё 10)"},//
+ {1,0x08,10,"ъыртш°р 7 ","ъыртш°р ъры№ъєы ЄюЁр 7 (шэфхъё 10)"},//
+ {1,0x48,11,"ъыртш°р ╓шЇЁ. ъырт. 8 ","ъыртш°р ъры№ъєы ЄюЁр 8 (шэфхъё 11)"},//
+ {1,0x09,11,"ъыртш°р 8 ","ъыртш°р ъры№ъєы ЄюЁр 8 (шэфхъё 11)"},//
+ {1,0x49,12,"ъыртш°р ╓шЇЁ. ъырт. 9 ","ъыртш°р ъры№ъєы ЄюЁр 9 (шэфхъё 12)"},//
+ {1,0x0A,12,"ъыртш°р 9 ","ъыртш°р ъры№ъєы ЄюЁр 9 (шэфхъё 12)"},//
+ {1,0x37,13,"ъыртш°р ╓шЇЁ. ъырт.* ","ъыртш°р ъры№ъєы ЄюЁр X (шэфхъё 13)"},//
+ {1,0x4E,14,"ъыртш°р ╓шЇЁ. ъырт. + ","ъыртш°р ъры№ъєы ЄюЁр + (шэфхъё 14)"},//
+ {1,0x4B,15,"ъыртш°р ╓шЇЁ. ъырт. 4 ","ъыртш°р ъры№ъєы ЄюЁр 4 (шэфхъё 15)"},//
+ {1,0x05,15,"ъыртш°р 4 ","ъыртш°р ъры№ъєы ЄюЁр 4 (шэфхъё 15)"},//
+ {1,0x4C,16,"ъыртш°р ╓шЇЁ. ъырт. 5 ","ъыртш°р ъры№ъєы ЄюЁр 5 (шэфхъё 16)"},//
+ {1,0x06,16,"ъыртш°р 5 ","ъыртш°р ъры№ъєы ЄюЁр 5 (шэфхъё 16)"},//
+ {1,0x4D,17,"ъыртш°р ╓шЇЁ. ъырт. 6 ","ъыртш°р ъры№ъєы ЄюЁр 6 (шэфхъё 17)"},//
+ {1,0x07,17,"ъыртш°р 6 ","ъыртш°р ъры№ъєы ЄюЁр 6 (шэфхъё 17)"},//
+ {1,0x135,18,"ъыртш°р ╓шЇЁ. ъырт. / ","ъыртш°р ъры№ъєы ЄюЁр / (шэфхъё 18)"},//
+ {1,0x4A,19,"ъыртш°р ╓шЇЁ. ъырт. - ","ъыртш°р ъры№ъєы ЄюЁр - (шэфхъё 19)"},//
+ {1,0x21,19,"ъыртш°р ырЄ. F ","ъыртш°р ъры№ъєы ЄюЁр - (шэфхъё 19) ш Ёху. F"},//
+ {1,0x4F,20,"ъыртш°р ╓шЇЁ. ъырт. 1 ","ъыртш°р ъры№ъєы ЄюЁр 1 (шэфхъё 20)"},//
+ {1,0x02,20,"ъыртш°р ъырт. 1 ","ъыртш°р ъры№ъєы ЄюЁр 1 (шэфхъё 20)"},//
+ {1,0x50,21,"ъыртш°р ╓шЇЁ. ъырт. 2 ","ъыртш°р ъры№ъєы ЄюЁр 5 (шэфхъё 21)"},//
+ {1,0x03,21,"ъыртш°р ъырт. 2 ","ъыртш°р ъры№ъєы ЄюЁр 5 (шэфхъё 21)"},//
+ {1,0x51,22,"ъыртш°р ╓шЇЁ. ъырт. 3 ","ъыртш°р ъры№ъєы ЄюЁр 3 (шэфхъё 22)"},//
+ {1,0x04,22,"ъыртш°р ъырт. 3 ","ъыртш°р ъры№ъєы ЄюЁр 3 (шэфхъё 22)"},//
+ {1,0x150,23,"ъыртш°р ╤ЄЁхыър тэшч ","ъры№ъєы ЄюЁр ёьхэр XY (шэфхъё 23)"},//
+ {1,0x148,24,"ъыртш°р ╤ЄЁхыър ттхЁї ","ъры№ъєы ЄюЁр ╤ЄЁхыър ттхЁї (шэфхъё 24)"},//
+ {1,0x12,24,"ъыртш°р ырЄ. E ","ъры№ъєы ЄюЁр ╤ЄЁхыър ттхЁї (шэфхъё 24) ш Ёху.E"},//
+ {1,0x11C,24,"ъыртш°р ╓шЇЁ. Enter ","ъры№ъєы ЄюЁр ╤ЄЁхыър ттхЁї (шэфхъё 24) ш + Ёху.E"},//
+ {1,0x52,25,"ъыртш°р ╓шЇЁ. ъырт. 0 ","ъыртш°р ъры№ъєы ЄюЁр 0 (шэфхъё 25)"},//
+ {1,0x0B,25,"ъыртш°р ъырт. 0 ","ъыртш°р ъры№ъєы ЄюЁр 0 (шэфхъё 25)"},//
+ {1,0x53,26,"ъыртш°р ╓шЇЁ. ъырт. . ","ъыртш°р ъры№ъєы ЄюЁр , (шэфхъё 26)"},//
+ {1,0x1E,26,"ъыртш°р ырЄ.A ","ъыртш°р ъры№ъєы ЄюЁр , (шэфхъё 26)ш Ёху. A"},//
+ {1,0xC,27, "ъыртш°р - (ЄшЁх) ","ъыртш°р ъры№ъєы ЄюЁр /-/ (шэфхъё 27)"},//
+ {1,0x30,27,"ъыртш°р ырЄ.B ","ъыртш°р ъры№ъєы ЄюЁр /-/ (шэфхъё 27)Ёху.B"},//
+ {1,0x152,28,"ъыртш°р Insert ","ъыртш°р ъры№ъєы ЄюЁр ┬╧ (шэфхъё 28)"},//
+ //{0xBD,28,"ъыртш°р ???? "," ъыртш°р ъры№ъєы ЄюЁр ┬╧ (шэфхъё 28)"},//
+ {1,0x153,29,"ъыртш°р Delete ","ъыртш°р ъры№ъєы ЄюЁр Cx (шэфхъё 29)"},//
+ {1,0x39,29,"ъыртш°р ╧Ёюсхы ","ъыртш°р ъры№ъєы ЄюЁр Cx (шэфхъё 29)"},//
+ {1,0x20,29,"ъыртш°р ырЄ. D ","ъыртш°р ъры№ъєы ЄюЁр Cx (шэфхъё 29)ш Ёху.D"}//

+

╟рьхўрэш  т їюфх яЁютхЁъш

+

╧юёыхфэшщ °ру яЁюуЁрьь√ эх тшфхэ, ¤ЄюЄ эхфюёЄрЄюъ ьюцэю єёЄЁрэшЄ№, + хёыш эх ёыхфютрЄ№ ыюушъх ┴3-34. ╤ыютю VER100 т эрўрых ЄхъёЄр яЁюуЁрьь√ ючэрўрхЄ, + ўЄю яЁюуЁрььр шьххЄ 100 °руют, р ёыютю VER256 - 256 °руют. ─ю эрўрыр яхЁтюую + °рур яЁюуЁрьь√ ьюуєЄ с√Є№ чрфрэ√ эрўры№э√х чэрўхэш  ЁхушёЄЁрь ярь Єш ёюўхЄрэшхь, + эряЁшьхЁ ╧0=1.567 шыш ╧0=1,567. ╩юьхэЄрЁшщ ьюцхЄ с√Є№ фюсртыхэ т яЁхфхырї ёЄЁюъш + яюёых фтєї эръыюээ√ї ўхЁЄ: //. ╩юьрэф√ (т юёэютэюь) ьюцэю яхўрЄрЄ№ эр Ёєёёъшь + ш ырЄшэёъшь °ЁшЇЄюь. ┬ьхёЄю ╚╧ ьюцэю эрсЁрЄ№ IP, ip, шя, i╧ ш Є.ф..

+

╟ряєёъ.

+

╤ыхтр, эшцх шэфшърЄюЁр, тъы■ўшЄ№ т√ъы■ўрЄхы№ + яшЄрэш .
+

+

╧Ёюфюыцхэшх ёыхфєхЄ ...

+


+

+ + diff --git a/programs/emulator/PrMK/trunk/docs/stack1.gif b/programs/emulator/PrMK/trunk/docs/stack1.gif new file mode 100644 index 0000000000..5dfe6c4020 Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/stack1.gif differ diff --git a/programs/emulator/PrMK/trunk/docs/stack2.gif b/programs/emulator/PrMK/trunk/docs/stack2.gif new file mode 100644 index 0000000000..66c6cd138f Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/stack2.gif differ diff --git a/programs/emulator/PrMK/trunk/docs/stack3.gif b/programs/emulator/PrMK/trunk/docs/stack3.gif new file mode 100644 index 0000000000..4e1365457a Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/stack3.gif differ diff --git a/programs/emulator/PrMK/trunk/docs/stack4.gif b/programs/emulator/PrMK/trunk/docs/stack4.gif new file mode 100644 index 0000000000..b5277699db Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/stack4.gif differ diff --git a/programs/emulator/PrMK/trunk/docs/stack5.gif b/programs/emulator/PrMK/trunk/docs/stack5.gif new file mode 100644 index 0000000000..26a002a010 Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/stack5.gif differ diff --git a/programs/emulator/PrMK/trunk/docs/stack6.gif b/programs/emulator/PrMK/trunk/docs/stack6.gif new file mode 100644 index 0000000000..6c4475a4fc Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/stack6.gif differ diff --git a/programs/emulator/PrMK/trunk/docs/stack7.gif b/programs/emulator/PrMK/trunk/docs/stack7.gif new file mode 100644 index 0000000000..2ac9a3b68d Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/stack7.gif differ diff --git a/programs/emulator/PrMK/trunk/docs/╨Ъ╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╜╤Л╨╡ ╨╕╨│╤А╤Л.txt b/programs/emulator/PrMK/trunk/docs/╨Ъ╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╜╤Л╨╡ ╨╕╨│╤А╤Л.txt new file mode 100644 index 0000000000..d6000955b1 --- /dev/null +++ b/programs/emulator/PrMK/trunk/docs/╨Ъ╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╜╤Л╨╡ ╨╕╨│╤А╤Л.txt @@ -0,0 +1,76 @@ +╩юья№■ЄхЁэ√х шуЁ√ схч ъюья№■ЄхЁют + +Xakep, эюьхЁ #007, ╩ры№ъєы ЄюЁэ√х шуЁ√ ёЄЁ. 70-73 +┬ырфшьшЁ ┬хёхыют (veselov@xakep.ru) +шыы■ёЄЁрЎш  - └.┼Ёхьшэ + + +╫Єюс√ яЁшуюЄютшЄ№ Ёрує шч чрщЎр, ъръ ьшэшьєь эєцэю шьхЄ№ ъю°ъє. + +═рЁюфэр  ьєфЁюёЄ№ + +┴ыруюфрЁ  эхєёЄрээющ чрсюЄх ╤ютхЄёъюую яЁртшЄхы№ёЄтр, ╧юышЄс■Ёю ╓╩ ╩╧╤╤ ш ышўэю ╦хюэшфр ╚ы№шўр ┴Ёхцэхтр яю тыхэшх яхЁёюэры№э√ї ъюья№■ЄхЁют т эр°хщ ёЄЁрэх ёшы№эю яюфчрфхЁцрыюё№. ┬ Єю тЁхь  ъръ эр ╟рярфх ЄЁєф ∙шхё  єцх тютё■ яюуыю∙рыш юяшєь ъюья№■ЄхЁэ√ї шуЁ, ёрь√щ яЁюуЁхёёштэ√щ т ьшЁх ёютхЄёъшщ эрЁюф яю ёЄрЁшэъх чрсштры ъючыр, фєыё  т яюфъшфэюую фєЁрър шыш ьюЁ∙шы Ёхяє эрф °рїьрЄрьш. ╬фэръю т ёхЁхфшэх тюё№ьшфхё Є√ї уюфют эют√щ тюцф№ ╤ютхЄёъюую ╤ю■чр ╠шїршы ╤хЁуххтшў ├юЁсрўхт яЁшчтры ёЄЁрэє ъ яютры№эющ ъюья№■ЄхЁэющ уЁрьюЄэюёЄш, ўхь ёЄЁрэр с√ыр ёшы№эю ючрфрўхээр. ╪шЁюъшх ьрёё√ ЄЁєф ∙шїё  уюЄют√ с√ыш юётрштрЄ№ ¤Єш ёрь√х ╧╩, тюЄ Єюы№ъю уфх шї тч Є№? ═р яЁюёЄюЁрї ╤ЄЁрэ√ ╤ютхЄют эхъюЄюЁюх (яЁшўхь тхё№ьр ьрыюх) ъюышўхёЄтю яхЁёюэры№э√ї ъюья№■ЄхЁют ъ Єюьє тЁхьхэш юёхыю Єюы№ъю т тхё№ьр чръЁ√Є√ї ═╚╚ фр эршсюыхх яЁштшыхушЁютрээ√ї єўхсэ√ї чртхфхэш ї. ═ю "ярЁЄш  ёърчрыр эрфю, ъюьёюьюы юЄтхЄшы хёЄ№!" ═ршсюыхх я√Єышт√х уЁрцфрэх тёъюЁх юсэрЁєцшыш, ўЄю ╧╩ т ёЄЁрэх шьх■Єё  т фюёЄрЄюўэ√ї ъюышўхёЄтрї... яЁртфр, Ёрё°шЇЁют√трырё№ ¤Єр рссЁхтшрЄєЁр эх "╧хЁёюэры№э√щ ╩юья№■ЄхЁ", р "╧ЁюуЁрььшЁєхь√щ ьшъЁю╩ры№ъєы ЄюЁ". + +╧юёъюы№ъє ёЁртэштрЄ№ с√ыю яЁръЄшўхёъш эх ё ўхь, юяЁхфхышЄ№, ўЄю ╧╩ ш Ё фюь эх ыхцры ё яюфышээ√ь ъюья№■ЄхЁюь, с√ыю эхы№ч . ┬юЄ яюўхьє хую тючтхыш т ¤ЄюЄ Ёрэу, ш яю тшыё  яхЁт√щ т ╨юёёшш "╩ыєс ╩юья№■ЄхЁэ√ї ╚уЁ". ╬сюёэютрыё  юэ эр ёЄЁрэшЎрї цєЁэрыр "╥хїэшър - ╠юыюфхцш" ш яЁшьхЁэю фю 1990-ую уюфр с√ы яюёт ∙хэ шёъы■ўшЄхы№эю ъры№ъєы ЄюЁрь. + +╫Єю цх яЁхфёЄрты ыр ¤Єр яхЁтр  т эр°хщ ёЄЁрэх шуЁютр  яырЄЇюЁьр? ─р ёрь√щ юс√ўэ√щ ъры№ъєы ЄюЁ фы  эрєўэ√ї ЁрёўхЄют, уфх, ъЁюьх тючьюцэюёЄш т√ўшёы Є№ ёшэєё√, ыюурЁшЇь√ ш яЁюўшх Єрэухэё√, с√ыр тючьюцэюёЄ№ ёюёЄртшЄ№ яЁюуЁрььє т фхт эюёЄю ёхь№ юяхЁрЄюЁют. ╧ЁюуЁрьь√ ьюуыш с√Є№ фютюы№эю ёыюцэ√ьш, яюёъюы№ъє шьхышё№ юяхЁрЄюЁ√ Ўшъыют, єёыютэ√ї ш схчєёыютэ√ї яхЁхїюфют, эє ш яЁюўшх эхюсїюфшь√х тх∙ш. ┼ёЄхёЄтхээю, шьхырё№ ш юяхЁрЄштэр  ярь Є№, яЁртфр, юэр юуЁрэшўштрырё№ ўхЄ√ЁэрфЎрЄ№■  ўхщърьш. ╥ръ ъръ т ъры№ъєы ЄюЁх ёє∙хёЄтютрыю цхёЄъюх Ёрчфхыхэшх ярь Єш, юЄтюфшьющ яхЁхьхээ√ь ш яЁюуЁрььх, фр х∙х с√ыю ьэюцхёЄтю чр°шЄ√ї т ╧╟╙ яюфяЁюуЁрьь, эрчтрЄ№ Єюўэ√щ ЁрчьхЁ ╬╟╙ эхтючьюцэю. ═ю, яхЁхтюф  эр ёютЁхьхээ√щ  ч√ъ, ьюцэю ёърчрЄ№, ўЄю юэ эх яЁхт√°ры 500 срщЄ. + +╚ тюЄ эр ¤Єющ-Єю "яырЄЇюЁьх" с√ыш Ёхрышчютрэ√ яЁръЄшўхёъш тёх ёє∙хёЄтютрт°шх Єюуфр црэЁ√ ъюья№■ЄхЁэ√ї шуЁ! ═ршсюы№°хх ЁрчтшЄшх яюыєўшыш ёшьєы ЄюЁ√ ш ёЄЁрЄхушш, эю эх с√ыш чрс√Є√ рЁърф√, ыюушўхёъшх шуЁ√ ш фрцх Ёюыхт√х. ╧юцрыєщ, Єюы№ъю ътхёЄ т ўшёЄюь тшфх юЄёєЄёЄтютры, їюЄ  эхъюЄюЁ√х ътхёЄюяюфюсэ√х шуЁ√ шьхышё№. + +═рфю ёърчрЄ№, ўЄю фы  шуЁ эр ъры№ъєы ЄюЁрї эєцэю с√ыю юсырфрЄ№ шчЁ фэющ ЇрэЄрчшхщ. ═є ёрь яюёєфш, Єхсх эх фрхЄё  эшўхую, ъЁюьх уюы√ї ЎшЇЁ, р Є√ эр шї юёэютх фюыцхэ яЁхфёЄртшЄ№ ёхсх ёюёЄю эшх єяЁрты хьюую юс·хъЄр, ётюх яюыюцхэшх т шуЁютюь ьшЁх ш тёх юёЄры№эюх. ╧Ёртфр, т эхъюЄюЁ√ї шуЁрї яючтюы ыюё№ ЁшёютрЄ№ ъръшх-Єю ёїхь√ ш уЁрЇшъш, чряюыэ Є№ ъръшх-Єю ЄрсышЎ√, эю ьюцэю с√ыю юсющЄшё№ ш схч тёхую ¤Єюую. + +╧ю ёЄєяхэ№ърь т эхсю + +┬ёх эрўрыюё№ ё ьрыхэ№ъющ яЁюуЁрььєы№ъш яюф эрчтрэшхь "╦єэюыхЄ", ъюЄюЁр  юўхэ№ с√ёЄЁю т√Ёюёыр т яюыэюЎхээє■ шуЁє "╨хщё ╩юэ-╥шъш". ┬юЄ хх ё■цхЄ: эхсюы№°ющ фтєїьхёЄэ√щ ъюёьшўхёъшщ ряярЁрЄ ёЄрЁЄєхЄ ё яютхЁїэюёЄш ╦єэ√ ш т√їюфшЄ эр ъЁєуютє■ юЁсшЄє. ╤ютхЁ°рхЄ їшЄЁ√х ьрэхтЁ√ яю ёсышцхэш■ ё юЁсшЄры№эющ ёЄрэЎшхщ ш т ъюэЎх ъюэЎют ёЄ√ъєхЄё  ё эхщ. ╧юяюыэ хЄ чрярё√ Єюяыштр, юЄЁ√трхЄё  юЄ ёЄрэЎшш ш ёютхЁ°рхЄ яхЁхыхЄ ъ ╟хьых. ┬їюфшЄ т рЄьюёЇхЁє, ЄюЁьючшЄё , яырэшЁєхЄ, р яюЄюь ёютхЁ°рхЄ яюўЄш ь уъє■ яюёрфъє эр яютхЁїэюёЄ№ юъхрэр. + +╥хяхЁ№ яюяЁюёш ы■сюую яЁюуЁрььшёЄр эряшёрЄ№ яю ¤Єюьє ё■цхЄє ъюёьшўхёъшщ ёшьєы ЄюЁ, ЁрчьхЁ ъюЄюЁюую эх яЁхт√°ры с√ 500 срщЄ. ╙ц эх чэр■, ўЄю шьхээю юэ юЄтхЄшЄ, эю тюЄ Єхсх эртхЁэ ър яЁшфхЄё  яютЄюЁшЄ№ ЇЁрчє ╧ Єрўър шч ёЄрЁюую рэхъфюЄр: "╬щ! └ ъєфр ¤Єю   яю°хы?" ┬ёх яЁртшы№эю, тьхёЄшЄ№ ёЄюы№ъю Ёрчэ√ї тх∙хщ т ёЄюы№ єчъшх Ёрьъш яюяЁюёЄє эхтючьюцэю. ╥хь эх ьхэхх, Єрър  шуЁр с√ыр ёфхырэр. + +╨х°хэшх с√ыю ухэшры№эю яЁюёЄ√ь (ъръ, тяЁюўхь, ш тёх, ўЄю ёт чрэю ё шуЁрьш эр ╧╩): ёфхырЄ№ ёшьєы ЄюЁ яюїюфют√ь ш ёюёЄю ∙шь шч эхёъюы№ъшї яюёыхфютрЄхы№эю ттюфшь√ї яЁюуЁрьь. ─р, фр, шуЁютющ яЁюЎхёё с√ы Ёрчфхыхэ эр їюф√, уфх т эрўрых ттюфшышё№ шёїюфэ√х фрээ√х, р т ъюэЎх яюыєўрышё№ ъююЁфшэрЄ√ ш ёюёЄю эшх ыхЄрЄхы№эюую ряярЁрЄр. ╤ърцхь, ттюфш°№ тЁхь  т 10 ёхъєэф, тхъЄюЁ Є уш 45 уЁрфєёют, ъюышўхёЄтю ёцшурхьюую Єюяыштр 100 ъшыюуЁрьь ш эрцшьрх°№ ъэюяъє "╤/╤" (╤ЄрЁЄ/╤Єюя). ╩ры№ъєы ЄюЁ ярЁє-ЄЁющъє ьшэєЄ цєццшЄ, р яюЄюь ёююс∙рхЄ, ўЄю Є√ єёях°эю тЁхчрыё  т ╦єэє ш Єтюш юёЄрэъш яюъю Єё  эр уыєсшэх 18-Єш ьхЄЁют. + +└ юс∙шщ шуЁютющ яЁюЎхёё т√уы фхы Єръ: эрсшЁрх°№ яхЁтє■ яЁюуЁрььє, ё хх яюью∙№■ юЄЁ√трх°№ё  юЄ яютхЁїэюёЄш ╦єэ√ ш т√їюфш°№ эр юЁсшЄє. ╟ряюьшэрх°№ т  ўхщърї ярь Єш ярЁрьхЄЁ√ юЁсшЄ√, ттюфш°№ ёыхфє■∙є■ яЁюуЁрььє (тЁєўэє■ ё ъыртшрЄєЁ√!) ш ёютхЁ°рх°№ ьрэхтЁ√ ёсышцхэш  ё юЁсшЄры№эющ ёЄрэЎшхщ. ╧юЄюь ёыхфєхЄ ЄЁхЄ№  яЁюуЁрььр, ё яюью∙№■ ъюЄюЁющ ёЄ√ъєх°№ё  ёю ёЄрэЎшхщ, эє ш Єръ фрыхх. ╧юыэюёЄ№■ шуЁр ёюёЄю ыр, хёыш ьэх эх шчьхэ хЄ ярь Є№, шч °хёЄш яЁюуЁрьь, яюёыхфэ   шч ъюЄюЁ√ї ьюфхышЁютрыр яюыхЄ схчьюЄюЁэюую ряярЁрЄр т рЄьюёЇхЁх. + +╚ьхээю юэр яюёыєцшыр юёэютющ фы  ёыхфє■∙хщ ёхЁшш ёшьєы ЄюЁют - ёрьюыхЄэ√ї. ╧хЁтющ с√ыр яЁюуЁрььр эр Єхьє Ёрёёърчр ╬ыфЁшфцр "╧юёыхфэшщ ф■щь". ╧Ёртфр, ёрцрЄ№ т эхщ эєцэю с√ыю эх ыхуъшщ ёрьюыхЄшъ, р уЁюьрфэ√щ р¤Ёюсєё, тёх цх юёЄры№э√х ЄЁрушўхёъшх ъюыышчшш юёЄрышё№ т ЎхыюёЄэюёЄш. └ тёъюЁх яюфюёяхы ш ёшьєы ЄюЁ ётхЁїыхуъюую ёрьюыхЄр, эр эхь ьюцэю с√ыю эх Єюы№ъю ёютхЁ°рЄ№ тчыхЄ√ ш яюёрфъш, эю ш т√яюыэ Є№ ьхЁЄтє■ яхЄы■! ╧Ёшўхь яЁхцфх ўхь сЁюёшЄ№ё  т ¤Єє ртрэЄ■Ёє, эєцэю с√ыю ъръ ёыхфєхЄ яюфуюЄютшЄ№ё , шэрўх ёрьюыхЄ ётрыштрыё  т °ЄюяюЁ ш Ёрчсштрыё . + +┬ююс∙х, ёшьєы ЄюЁют с√ыю ёючфрэю тхышъюх ьэюцхёЄтю - шьшЄшЁютрышё№ фшЁшцрсыш ё ЄхьяхЁрЄєЁэ√ь єяЁртыхэшхь, ярЁєёэ√х сєхЁр, уыєсюъютюфэ√х ряярЁрЄ√ ш фрцх Єръшх ¤ъчюЄшўхёъшх ёЁхфёЄтр яхЁхфтшцхэш  ъръ уЁртшыхЄ√. ═х с√ыю Єюы№ъю ёшьєы ЄюЁют эрчхьэ√ї ьр°шэ, яю юўхэ№ яЁюёЄющ яЁшўшэх - шуЁрЄ№ т эшї т яюїюфютюь Ёхцшьх ёютёхь єц эх шэЄхЁхёэю. ╬фэръю тёъюЁх ¤Єр ЄЁєфэюёЄ№ с√ыр яЁхюфюыхэр. ╧Ёртфр, яю ёютЁхьхээющ ъырёёшЇшърЎшш шуЁ√ фы  ъры№ъєы ЄюЁр, °хф°шх т Ёхры№эюь тЁхьхэш, ёыхфєхЄ юЄэхёЄш ъ рЁърфрь. + +╤шэєёюшфры№э√щ Ёєы№ + +╧юяЁюсєщ Ёх°шЄ№ Єръє■ чрфрўє: яхЁхф Єюсющ ъры№ъєы ЄюЁ, т яЁюЎхёёх т√ўшёыхэшщ ЁхрушЁє■∙шщ Єюы№ъю эр эрцрЄшх ъэюяъш "╤/╤" ш эхяЁхЁ√тэю т√тюф ∙шщ тё■ яЁюуюэ хьє■ ўхЁхч эхую шэЇюЁьрЎш■ эр фшёяыхщ (т√уы фшЄ ¤Єю ъръ цєЄъюх ьхы№ърэшх ЎшЇЁ). ╥хсх эєцэю ёючфрЄ№ фы  ¤Єюую ъры№ъєы ЄюЁр шуЁє, шфє∙є■ т Ёхцшьх Ёхры№эюую тЁхьхэш. ┼ёЄ№ ъръшх-эшсєф№ ёююсЁрцхэш ? + +╦рфэю, фр■ яюфёърчъє. ╩ры№ъєы ЄюЁ ьюцхЄ тхёЄш т√ўшёыхэш  єуыют√ї тхышўшэ т уЁрфєёрї, Ёрфшрэрї шыш уЁрфрї (¤Єю ъюуфр яЁ ьющ єуюы Ёртхэ 100 уЁрфєёрь; уютюЁ Є, яЁшфєьрэю ёяхЎшры№эю фы  рЁьхщёъшї ёЄрЁ°шэ, ўЄюс√ ё Єюўъющ ъшяхэш  тюф√ эх яєЄрыш), яЁшўхь яхЁхъы■ўрЄ№ ё юфэюую Ёхцшьр эр фЁєующ ьюцэю яЁ ью т яЁюЎхёёх т√ўшёыхэшщ. ╙ёхъ шфх■? ╠юыюфхЎ! └ фы  Єхї, ъЄю т Єрэъх, ЁрёЄюыъє■ яюфЁюсэю. + +╫Єюс√ ёююс∙шЄ№ ъры№ъєы ЄюЁє, ўхую Є√ юЄ эхую ўЄю-Єю їюўх°№, эєцэю ттхёЄш т яЁюуЁрььє т√ўшёыхэшх їюЄ  с√ ёшэєёр 90. ┼ёыш ёўхЄ шфхЄ т уЁрфєёрї, яюыєўрхЄё  юфэр тхышўшэр, т Ёрфшрэрї - фЁєур , эє р т уЁрфрї ш тютёх ЄЁхЄ№ . ╧ЁютхЁшт т эєцэюь ьхёЄх яюыєўхээє■ тхышўшэє, ъры№ъєы ЄюЁ єчэрхЄ, ўЄю Ёєы№ яютхЁэєЄ тяЁртю, шыш, Єрь, яхфры№ урчр єЄюяыхэр фю юЄърчр. + +└ ъръ с√Є№ ё т√тюфюь шэЇюЁьрЎшш? ╥юцх яЁюёЄю. ═єцэю яютЄюЁшЄ№ т√тюф ёююЄтхЄёЄтє■∙шї ЎшЇЁ эр фшёяыхщ эх ьхэхх ЄЁхї Ёрч (Єю хёЄ№ тёЄртшЄ№ т яЁюуЁрььє ЄЁш яєёЄ√ї юяхЁрЄюЁр), Єюуфр ўхыютхўхёъшщ уырч єёяхтрхЄ ЁрёёьюЄЁхЄ№ шї. ┬ ъырёёшўхёъшї рЁърфрї, ёърцхь, т уюэърї ё яЁхя ЄёЄтш ьш, т√тюфшырё№ ъюьсшэрЎш  эєыхщ, хфшэшЎ ш фтюхъ. ═єыш юсючэрўрыш ётюсюфэє■ фюЁюує, хфшэшЎ√  ь√ ш ърьэш, р фтющъш - ьр°шэ√ ёюяхЁэшъют, ш эєцэю с√ыю юяшёрээ√ь ёяюёюсюь ьхцфє эшьш ыртшЁютрЄ№. + +┬ сюыхх ёыюцэ√ї рЁърфрї, Єшяр єяЁртыхэш  ярЁєёэющ  їЄющ, т√тюфшырё№ хх ёъюЁюёЄ№ (фтр чэрър), ъєЁё (х∙х фтр чэрър), ёъюЁюёЄ№ тхЄЁр (фтр чэрър) ш хую эряЁртыхэшх (яюёыхфэшх фтр чэрър). ╚ тюЄ чр ёўшЄрээ√х ёхъєэф√ эєцэю с√ыю ёўшЄрЄ№ тюё№ьшчэрўэюх ўшёыю, ёююсЁрчшЄ№, ъръшх хую ЎшЇЁ√ ўЄю ючэрўр■Є, ш фрЄ№ эєцэє■ ъюьрэфє. ╧юцрыєщ, ¤Єш ъры№ъєы ЄюЁэ√х рЁърф√ с√ыш яюёыюцэхх ёютЁхьхээ√ї. + +┼фшэёЄтю ш сюЁ№ср яЁюЄштюяюыюцэюёЄхщ + +┬юЄ єц ўЄю, ърчрыюё№ с√, эхтючьюцэю тЄшёэєЄ№ т Ёрьъш фхт эюёЄр ёхьш юяхЁрЄюЁют ш ўхЄ√ЁэрфЎрЄш  ўххъ ярь Єш, Єръ ¤Єю ьшЁ ёЄЁрЄхушш. ╬фэръю юэ яЁхъЁрёэю Єєфр тыхч. ╧хЁтр  ёЄЁрЄхушўхёър  шуЁр эрч√трырё№ "╬ёЄЁют" ш фютюы№эю Єюўэю, їюЄ  ш ёю чэрўшЄхы№э√ьш єяЁю∙хэш ьш, ьюфхышЁютрыр єяЁртыхэшх эхсюы№°шь юёЄЁютэ√ь уюёєфрЁёЄтюь. ┴√ыш Єрь эрыюуш, ёюсшЁрхь√х ё цшЄхыхщ, фюїюф√ юЄ ЄєЁшчьр ш юЄ яЁюь√°ыхээюёЄш. ╤є∙хёЄтютрыш ьхЄюф√ яют√°хэш  тёхї ¤Єшї фюїюфют. ╧Ёшўхь яЁюь√°ыхээюёЄ№ чруЁ чэ ыр юъЁєцр■∙є■ ёЁхфє ш ьх°рыр ЄєЁшчьє, р цшЄхыш с√ыш яюёЄю ээю ўхь-Єю эхфютюы№э√. + +═рфю ёърчрЄ№, рфьшэшёЄЁрЎш  ╩ыєср яЁхъЁрёэю юЁшхэЄшЁютрырё№ т ЄЁхсютрэш ї Єхъє∙хую ьюьхэЄр, яю¤Єюьє Єръє■ ъырёёютю ўєцфє■ шуЁє т√яєёЄшЄ№ эх ьюуыр, яЁш°ыюё№ яюфтхЁуэєЄ№ хх чэрўшЄхы№э√ь фюЁрсюЄърь. ═р фтюЁх ёЄю ы єцх 1986-щ уюф, ёЄЁрэх с√ыю тхыхэю яютхЁэєЄ№ё  ышЎюь ъ ёхы№ёъюьє їюч щёЄтє, яю¤Єюьє шуЁр эрч√трырё№ "╙Ёюцрщ". ╠юфхышЁютрыюё№ т эхщ єяЁртыхэшх ъюыїючюь, яЁшўхь фютюы№эю Єюўэю, ё чрёєїрьш, эр°хёЄтшхь уЁ√чєэют, ЁрёїшЄшЄхы ьш ёюЎшрышёЄшўхёъющ ёюсёЄтхээюёЄш ш тёхь яЁюўшь. └ х∙х ўхЁхч уюф, ъюуфр эр°ш яЁртшЄхыш ючрсюЄшышё№ ъююяхЁрЄштэющ фх Єхы№эюёЄ№■, ¤Єр цх шуЁр с√ыр яЁхюсЁрчютрэр т "╩ююяхЁрЄштэюх ърЇх" (тюЄ юэр, яЁхф°хёЄтхээшЎр ьхыъюяЁючютёъюую "╧шЎр ╥рщъєэр"!). + +╧ючфэхх яю тшышё№ трЁшрэЄ√ шуЁ√, яючтюы т°шх єяЁрты Є№ сюы№°шь ьрурчшэюь, чртюфюь, ртЄюЁхьюэЄэющ ьрёЄхЁёъющ ш фрцх яЁхёЄєяэющ °рщъющ. ╧Ёртфр, тёх ¤Єю с√ыш яЁюфєъЄ√ эрЁюфэюую ЄтюЁўхёЄтр ш эр ёЄЁрэшЎ√ ъыєср юэш эх яюярыш. + +═шўхую т ¤Єюь яхЁхўэх шуЁ эх єыртыштрх°№? ═є ъръ цх, юфшэ ш ЄюЄ цх юёэютэющ рыуюЁшЄь шуЁ√ яючтюы хЄ ьюфхышЁютрЄ№ фх Єхы№эюёЄ№ ЁєъютюфшЄхы  уюёєфрЁёЄтр, ъЁєяэюую (ш ьхыъюую) їюч щёЄтхээшър, ъююяхЁрЄюЁр ш ьрЇшючш. ╠юцэю ёърчрЄ№, ўЄю эр ¤Єюь яЁюёЄюь яЁшьхЁх с√ыю яюърчрэю, ўЄю яЁшэЎшяшры№э√ї Ёрчышўшщ ьхцфє тёхьш эшьш эхЄ. ╬ўхэ№ ёъюЁю ёЄЁрэх яЁш°ыюё№ єсхфшЄ№ё  т ¤Єюь эр ёюсёЄтхээюь юя√Єх. + +┬яЁюўхь, ¤Єю эх шьххЄ юЄэю°хэш  ъ яЁхфьхЄє эр°хую ЁрёёьюЄЁхэш , яю¤Єюьє ёърцє ыєў°х ярЁє ёыют ю тюЁухщьрї. ╥єЄ, ёюсёЄтхээю уютюЁ , тёх юсёЄюшЄ яЁюёЄю. ─хыю т Єюь, ўЄю эр ╟рярфх тюЁухщь√ яю тшышё№ чрфюыую фю яю тыхэш  ъюья№■ЄхЁют. ┴√ыш ¤Єю Єръшх эрёЄюы№э√х шуЁ√, Ёрч√уЁ√трхь√х эр ърЁЄюээюь яюых яырёЄьрёёют√ьш Їш°ърьш. ╫Єюс√ тэхёЄш т эшї ¤ыхьхэЄ юс·хъЄштэюёЄш ш ёыєўрщэюёЄш, яЁшьхэ ышё№ шуЁры№э√х ъюёЄш. ╩ръ Є√ яюэшьрх°№, яхЁхтхёЄш тёх ¤Єю эр  ч√ъ ъры№ъєы ЄюЁр эхёыюцэю. ╥ю хёЄ№ т яхЁт√ї тюЁухщьрї ёюїЁрэ ыюё№ ш яюых, ш Їш°ъш, р ъры№ъєы ЄюЁ Єюы№ъю сюыхх-ьхэхх юс·хъЄштэю ЁрёёўшЄ√тры Ёхчєы№ЄрЄ√ ёЄюыъэютхэш  фтєї юЄЁ фют. ╧ючфэхх яю тшышё№ сюыхх яЁюфтшэєЄ√х шуЁ√, уфх тчршьэюх яюыюцхэшх тющёъ, єЁютхэ№ шї ёэрсцхэш  ш яюфуюЄютъш, ьюЁры№ ш тёх яЁюўхх їЁрэшыюё№ т ярь Єш ъры№ъєы ЄюЁр, р шуЁюъє юёЄртрыюё№ Єюы№ъю юЄфртрЄ№ ъюьрэф√, рЄръютрЄ№ Єръющ-Єю юЄЁ ф эхяЁш Єхы  Єръшь-Єю ётюшь юЄЁ фюь. + +╞хёЄюъшх шуЁ√ + +┬ юсырёЄш ыюушўхёъшї шуЁ ъры№ъєы ЄюЁ тёЄєяшы эр ЄЁюяє, ъюЄюЁє■ хьє, яю шфхх, эшъръ эх тючьюцэю с√ыю юфюыхЄ№. ─хыю т Єюь, ўЄю эр°ш єьхы№Ў√ эх ёЄрыш ьюфхышЁютрЄ№ тё ъшх ярччы√, ъЁхёЄшъш-эюышъш шыш "╠юЁёъющ сющ", юэш ёЁрчє цх тч ышё№ чр °рїьрЄ√ ш °р°ъш! + +┬юЄ тхф№ ўЄю шэЄхЁхёэю, тёхую чр эхёъюы№ъю ьхё Ўхт фю яю тыхэш  яхЁтющ °рїьрЄэющ яЁюуЁрьь√ юфшэ шч юЄЎют-юёэютрЄхыхщ ъыєср эр тюяЁюё, ъюуфр Єръшх шуЁ√ яю т Єё , юЄтхЄшы ЇЁрчрьш: "═х тяюыэх юсюёэютрээр  тхЁр тю тёхьюує∙хёЄтю ╧╩", "╩ръшх Єрь °рїьрЄ√! ╧ш°ш ўЄю яюярыю, їюфш ъръ яюярыю!" ╧ю ёўрёЄ№■, яюъыюээшъют ╧╩ ¤Єю эх юсхёъєЁрцшыю. ╩юэхўэю, фю яюыэюЎхээ√ї °рїьрЄэ√ї яЁюуЁрьь фхыю Єръ ш эх фю°ыю, эю   єтхЁхэ, ўЄю эх шч-чр ёырсюёЄш ╧╩ шыш эхфюёЄрЄър т эр°хщ ёЄЁрэх ёрьюЁюфъют, р Єюы№ъю шч-чр яЁш°хёЄтш  т эхх ZX Spectrum ш яЁюўхщ шэюёЄЁрээющ чрЁрч√. + +╧хЁтр  °рїьрЄэр  яЁюуЁрььр яЁхфырурыр яюёЄртшЄ№ ьрЄ ёыюэюь ш ъюэхь ўхЁэюьє ъюЁюы■, єяЁрты хьюьє ╧╩. ═рфю ёърчрЄ№, ўхЁэ√х юсюЁюэ ышё№ тхё№ьр шёъєёэю, Єръ ўЄю яютючшЄ№ё  яЁшїюфшыюё№ эхьрыю. ╧юЄюь с√ыш яЁюуЁрьь√, т ъюЄюЁ√ї ╧╩ ёЄртшы ырф№хщ шыш ырф№хщ ш ёыюэюь ьрЄ ъюЁюы■, єяЁрты хьюьє ўхыютхъюь. ─юыцхэ юЄьхЄшЄ№, ¤Єю с√ыш юўхэ№ юсшфэ√х яЁюуЁрьь√, юфшэ ьющ яЁш Єхы№, сюы№°ющ ы■сшЄхы№ °рїьрЄ, чрсЁюёшы шї эртёхуфр яюёых Єюую ъръ "яЁюъы Єр  цхыхч ър" яюёЄртшыр хьє ьрЄ эр фхт Єюь їюфє. + +╧юЄюь яю°ыш °рїьрЄюяюфюсэ√х шуЁ√, "┬юыъш ш ютЎ√", "╙ъЁю∙хэшх ьєёЄрэур" ш фЁєушх. ═ръюэхЎ, яю тшышё№ ш °р°хўэ√х яЁюуЁрьь√, т ъюЄюЁ√ї ьюцэю с√ыю ё√уЁрЄ№ яюыэюЎхээє■ ярЁЄш■. ╬ эшї эєцэю ёърчрЄ№ юёюсю. + +─ы  эрўрыр юўхЁхфэр  чрфрўър эр ёююсЁрчшЄхы№эюёЄ№. ╪р°хўэр  фюёър ёюёЄюшЄ шч 64-ї ъыхЄюъ (хёыш ёўшЄрЄ№ Єюы№ъю шёяюы№чєхь√х ўхЁэ√х - 32-ї), т шуЁх єўрёЄтєхЄ яю 12 °р°хъ ё ърцфющ ёЄюЁюэ√. ╥хяхЁ№ яюяЁюсєщ чряшїэєЄ№ тёх ¤Єю т 14 ЁхушёЄЁют, фр х∙х ярЁє-ЄЁющъє эєцэю юёЄртшЄ№ фы  тё ъшї тёяюьюурЄхы№э√ї т√ўшёыхэшщ. ═є ўЄю, ъЁ√°р яюхїрыр? ╦рфэю, эх сєфє ЄюьшЄ№. + +╧ЁюёЄхщ°шщ ш эршсюыхх ¤ъюэюьэ√щ ёяюёюс чръы■ўрхЄё  т Єюь, ўЄюс√ їЁрэшЄ№ эх ёюёЄю эшх ърцфющ ъыхЄюўъш, р ёюёЄю эшх Ё фют. ╥ю хёЄ№ чряшё√трхь т яхЁт√щ ЁхушёЄЁ, ёърцхь, 1020, ¤Єю чэрўшЄ, ўЄю т яхЁтющ ъыхЄъх яхЁтюую Ё фр ёЄюшЄ схыр  °р°ър, тЄюЁр  ш ўхЄтхЁЄр  яєёЄ√, р т ЄЁхЄ№хщ ёЄюшЄ ўхЁэр . ─ы  юяшёрэш  тёхщ фюёъш яюэрфюсшЄё  тёхую тюёхь№ ЁхушёЄЁют. ═ю ьюцэю ш ¤Єю ъюышўхёЄтю ёюъЁрЄшЄ№ тфтюх, хёыш т юфэюь ЁхушёЄЁх їЁрэшЄ№ ёЁрчє фтр Ё фр, эхўхЄэ√щ ъръ Ўхыє■ ўрёЄ№ ўшёыр, р ўхЄэ√щ ъръ фЁюсэє■. ┬ююс∙х-Єю хёЄ№ тючьюцэюёЄ№ чряшїэєЄ№ тё■ фюёъє т фтр ЁхушёЄЁр, яюяЁюсєщ ёрь ёююсЁрчшЄ№, ъръ. + +═хёс√т°шхё  эрфхцф√ + +╪р°хўэ√х яЁюуЁрьь√ с√ыш, ьюцэю ёърчрЄ№, ыхсхфшэющ яхёэхщ ╧╩. ╧Ёртфр, яюф чрэртхё, яю тшырё№ яюўЄш эрёЄю ∙р  RPG "╤ЄЁрэр ╘рэЄрчш ", RTS "╧юыхЄ °ьхы ", рЁърфр "╬їюЄр эр ёърыюхфр" ш яю°руютр  ёЄЁрЄхуш  "╧х∙хЁр ёюъЁютш∙". ╬фэръю ё чрярфр (ш тюёЄюър) эр ёЄЁрэє єцх эрфтшэєышё№ тё ъшх Єрь "╩юььюфюЁ√" ш "└ьшуш", р чр эрьш ьр ўшы ш ёрь IBM PC. ╩ръ Є√ чэрх°№, ╤ЄЁрэр ╤ютхЄют ¤Єюую эрЄшёър эх т√фхЁцрыр ш Ёрчтрышырё№, яюф хх юсыюьърьш с√ы яюуЁхсхэ ш ёъЁюьэ√щ ьшъЁюъры№ъєы ЄюЁ. └ цры№, ъЄю чэрхЄ, фю ъръшї с√ т√ёюЄ фю°ыю эрЁюфэюх ЄтюЁўхёЄтю, ъръшх эхь√ёышь√х шфхш тюяыюЄшышё№ с√ т фхт эюёЄр ёхьш °рурї яЁюуЁрьь√ ш ўхЄ√ЁэрфЎрЄш  ўхщърї ярь Єш? \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56.htm b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56.htm new file mode 100644 index 0000000000..713e43a881 --- /dev/null +++ b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56.htm @@ -0,0 +1,90 @@ + + + +╤шёЄхьр ъюьрэф яЁюуЁрььшЁєхь√ї ьшъЁюъры№ъєы ЄюЁют ┴3-34 ╠╩-54 ╠╩-56 + + + + + + +
+ + + + + + + + +

╤шёЄхьр ъюьрэф ╧╠╩ ┴3-34, ╠╩-54, ╠╩-56


+├ыртэр  +/ + +▌╩┬╠ +/ + +╬с∙р  шэЇюЁьрЎш  + + +
+
+ + + + + + + + + + + +

+ +╤шёЄхьр ъюьрэф ёютхЄёъшї яЁюуЁрььшЁєхь√ї ьшъЁюъры№ъєы ЄюЁют ┴3-34 +

╨шё.1. [1] +

+
+

╤шёЄхьр ъюьрэф ёютхЄёъшї яЁюуЁрььшЁєхь√ї ьшъЁюъры№ъєы ЄюЁют "▌ыхъЄЁюэшър ┴3-34" яЁхфёЄртыхэр эр Ёшёєэъх 1. ╟эрърьш '-', 'L', 'C', '├', 'E' юсючэрўхэ√ °хёЄэрфЎрЄшЁшўэ√х ЎшЇЁ√ 'A','B','C','D','E' ёююЄтхЄёЄтхээю. ╥ръ юэш т√тюфшышё№ эр ёхьшёхуьхэЄэюь ┬╦╚ шэфшърЄюЁх ъры№ъєы ЄюЁют. ╓шЇЁр 'F' т ЄрсышЎх эх шьххЄ юЄфхы№эюую юсючэрўхэш , юэр т√тюфшырё№ ъръ яєёЄюх чэръюьхёЄю. ┼фшэёЄтхээр  ъюьрэфр ┴3-34, т ъюЄюЁющ юэр шёяюы№чєхЄё  - ¤Єю "FBx" (тючтЁрЄ ўшёыр т ёЄхъ шч ЁхушёЄЁр їЁрэхэш  Ёхчєы№ЄрЄр яЁхф√фє∙хщ юяхЁрЎшш). ╨рчышўэ√ь ЎтхЄюь т√фхыхэ√ уЁєяя√ ъюьрэф т чртшёшьюёЄш юЄ шї эрчэрўхэш . +

+

┬ ┴3-34 с√ыю 14 ЁхушёЄЁют ярь Єш. ╩юьрэф√ "╧↑" "╚╧↑" "Kx≠0↑" "╩┴╧↑" "Kx≥0↑" "╩╧╧↑" "╩╧↑" "Kx<0↑" "╩╚╧↑" "Kx=0↑" ЁрсюЄрыш т ┴3-34 рэрыюушўэю ъюьрэфрь ё ЁхушёЄЁюь 0, эю эх т√ч√трыш ртЄюфхъЁхьхэЄр, Єю хёЄ№ єьхэ№°хэш  эр хфшэшЎє ёюфхЁцшьюую ЁхушёЄЁр 0 яЁш ъюётхээюь юсЁр∙хэшш. ▌Єр юёюсхээюёЄ№ ўрёЄю шёяюы№чютрырё№ яЁш юяЄшьшчрЎшш, эю ё яю тыхэшхь ЁхушёЄЁр "┼" т ьюфхы ї ╠╩-52 ш ╠╩-61 яЁюуЁрьь√ ё ¤Єшьш ъюьрэфрьш яЁш°ыюё№ ЁрчЁрсрЄ√трЄ№ чрэютю. ╩юьрэф√ ё ъюфрьш 26h-2Ah ш 30h-3Bh т√ч√трыш т ┴3-34 ртрЁшщэ√щ юёЄрэют. +

+

╩юьрэф√ ъры№ъєы ЄюЁют ╠╩-54 ш ╠╩-56 юЄышўрышё№ Ё фюь юсючэрўхэшщ: "╧→x" тьхёЄю "╚╧", "x→╧" тьхёЄю "╧", "X↔Y" тьхёЄю "XY", "B↑" тьхёЄю "↑", р Єръцх ъюьрэф√ "sin-1", "cos-1", "tg-1" тьхёЄю ъюЁЁхъЄэ√ї юсючэрўхэшщ "arcsin", "arccos", "arctg" ёююЄтхЄёЄтхээю. ╧Ёш ¤Єюь эрсюЁ ъюьрэф ш шёяюыэ хь√х шьш фхщёЄтш  т яхЁхўшёыхээ√ї ьюфхы ї с√ыш шфхэЄшўэ√. ╤шёЄхьр ъюьрэф ш шї юсючэрўхэшщ ╠╩-54, ╠╩-56  ты хЄё  срчютющ фы  яюёыхфє■∙шї ьюфхыхщ ╠╩-52 ш ╠╩-61. +

+╧хЁхьх∙хэшх шэЇюЁьрЎшш т ёЄхъх яЁш т√яюыэхэшш ъюьрэф ╧╠╩ ┴3-34 +

╨шё.2. [1] +

+

═р Ёшёєэъх 2 яюърчрэю яхЁхьх∙хэшх шэЇюЁьрЎшш т ЁхушёЄЁрї ёЄхър ьшъЁюъры№ъєы ЄюЁют яЁш т√яюыэхэшш Ёрчышўэ√ї ъюьрэф ш юяхЁрЎшщ. ╧юфЁюсэюх юяшёрэшх ёЄхър ёь. т ЁєъютюфёЄтх яю ¤ъёяыєрЄрЎшш яЁюуЁрььшЁєхьюую ъры№ъєы ЄюЁр ╠╩-152. +

+

┬ юёэютх ёшёЄхь√ ъюьрэф ъыртш°э√ї ▌┬╠ ╠╩-152 ш ╠╩-161 ыхцрЄ ъюьрэф√ ъры№ъєы ЄюЁют ╠╩-52 ш ╠╩-61, эю юсючэрўхэш  ъюьрэф чряшёш "╧" ш ёўшЄ√трэш  "╚╧", р Єръцх юсЁрЄэ√ї ЄЁшуюэюьхЄЁшўхёъшї ЇєэъЎшщ ёююЄтхЄёЄтє■Є ┴3-34. ┼ёЄ№ ш фЁєушх юЄышўш  ▌╩┬╠ "▌ыхъЄЁюэшър ╠╩" юЄ ёютхЄёъшї ╧╠╩. +

+


+╤шёЄхьр ъюьрэф ёютхЄёъшї яЁюуЁрььшЁєхь√ї ьшъЁюъры№ъєы ЄюЁют ┴3-34 - ═ш╞ 12-84 +

╨шё.3. [2] +

═р Ёшёєэъх 3 - ЄрсышЎр ъюфют юяхЁрЎшщ фы  яЁюуЁрььшЁєхьюую ьшъЁюъры№ъєы ЄюЁр "▌ыхъЄЁюэшър ┴3-34" ё 5-щ ЎтхЄэющ тъырфъш цєЁэрыр "═рєър ш ╞шчэ№" N12 чр 1984 у. ╨шё. ╤. ╧штютрЁютр. +

+ +


+

╦шЄхЁрЄєЁр

+ + + + + +
+

1. ─рэшыют ╚.─. ╤хъЁхЄ√ яЁюуЁрььшЁєхьюую ьшъЁюъры№ъєы ЄюЁр. - ╠.:═рєър. ├ы. Ёхф. Їшч.-ьрЄ. ышЄ., 1986. - 160 ё.- (┴-ўър "╩трэЄ". ┬√я. 55.)

+
─рэшыют ╚.─. ╤хъЁхЄ√ яЁюуЁрььшЁєхьюую ъры№ъєы ЄюЁр. ┴шсышюЄхўър ╩трэЄ т√я. 55
+

2. ╞єЁэры "═рєър ш ╞шчэ№" N12 - 1984 у.

+
═ш╞ 12-84
+
+ +
+
═╧╧ "╤┼╠╚╩╬" (383) 271-01-25 (ьэюуюърэры№э√щ)
+
+ + + + + + diff --git a/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/com_b334.jpg b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/com_b334.jpg new file mode 100644 index 0000000000..4d7f95acd4 Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/com_b334.jpg differ diff --git a/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/danilov1.jpg b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/danilov1.jpg new file mode 100644 index 0000000000..8632c72799 Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/danilov1.jpg differ diff --git a/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/nkj12840.jpg b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/nkj12840.jpg new file mode 100644 index 0000000000..42e8819dd4 Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/nkj12840.jpg differ diff --git a/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/stack000.jpg b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/stack000.jpg new file mode 100644 index 0000000000..a8395d1f0b Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/stack000.jpg differ diff --git a/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/tablb334.jpg b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/tablb334.jpg new file mode 100644 index 0000000000..5c9df85ad5 Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨┐╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╤Г╨╡╨╝╤Л╤Е ╨╝╨╕╨║╤А╨╛╨║╨░╨╗╤М╨║╤Г╨╗╤П╤В╨╛╤А╨╛╨▓ ╨С3-34 ╨Ь╨Ъ-54 ╨Ь╨Ъ-56_files/tablb334.jpg differ diff --git a/programs/emulator/PrMK/trunk/docs/╨н╨Ъ╨Т╨Ь ╨н╨╗╨╡╨║╤В╤А╨╛╨╜╨╕╨║╨░ ╨Ь╨Ъ-152 ╨а╨н - ╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨н╨Т╨Ь.htm b/programs/emulator/PrMK/trunk/docs/╨н╨Ъ╨Т╨Ь ╨н╨╗╨╡╨║╤В╤А╨╛╨╜╨╕╨║╨░ ╨Ь╨Ъ-152 ╨а╨н - ╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨н╨Т╨Ь.htm new file mode 100644 index 0000000000..82d5d42ee2 --- /dev/null +++ b/programs/emulator/PrMK/trunk/docs/╨н╨Ъ╨Т╨Ь ╨н╨╗╨╡╨║╤В╤А╨╛╨╜╨╕╨║╨░ ╨Ь╨Ъ-152 ╨а╨н - ╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨н╨Т╨Ь.htm @@ -0,0 +1,2636 @@ + + + +▌╩┬╠ ▌ыхъЄЁюэшър ╠╩-152 ╨▌ - ╤шёЄхьр ъюьрэф ▌┬╠ + + + + + + +
+ + + + + + + + +

╤шёЄхьр ъюьрэф ▌┬╠


+├ыртэр  +/ + +▌╩┬╠ +/ + +╥хїэшўхёър  шэЇюЁьрЎш  +/ + +╨▌ + + +
+
+ + + + + + + + + + + +

+

╧Ёшыюцхэшх ┴

+

╥рсышЎр ┴.1

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
╟эрўхэшх╤шьтюы╩юьрэфр
DECHEX╨єё╦рЄ─ышэр╬яшёрэшх
000h001┬тюф ЎшЇЁ√ 0
101h 111┬тюф ЎшЇЁ√ 1
202h 221┬тюф ЎшЇЁ√ 2
303h 331┬тюф ЎшЇЁ√ 3
404h 441┬тюф ЎшЇЁ√ 4
505h 551┬тюф ЎшЇЁ√ 5
606h 661┬тюф ЎшЇЁ√ 6
707h 771┬тюф ЎшЇЁ√ 7
808h 881┬тюф ЎшЇЁ√ 8
909h 991┬тюф ЎшЇЁ√ 9
100Ah ,,1┬тюф фхё Єшўэющ чря Єющ
110Bh /-/+/-1╤ьхэр чэрър
120Ch ┬╧EE1┬тюф яюЁ фър
130Dh CxCX1╤сЁюё ёюфхЁцшьюую ЁхушёЄЁр X
140Eh B↑ENT1┬тюф т ёЄхъ
150Fh F BxF ANS1┬√чют ўшёыр т ЁхушёЄЁ X шч ЁхушёЄЁр яЁхф√фє∙хую Ёхчєы№ЄрЄр X1
1610h ++1╤ыюцхэшх
1711h --1┬√ўшЄрэшх
1812h ×*1╙ьэюцхэшх
1913h ÷/1─хыхэшх
2014h <->1╬сьхэ ёюфхЁцшьюую ЁхушёЄЁют X ш Y
2115h F 10xF 10^X110 т ёЄхяхэш X
2216h F exF EXP1e (2,71828...) т ёЄхяхэш X
2317h F lgF LG1─хё Єшўэ√щ ыюурЁшЇь
2418h F lnF LN1═рЄєЁры№э√щ ыюурЁшЇь
2519h F arcsinF ARCSIN1└Ёъёшэєё
261Ah F arccosF ARCCOS1└Ёъъюёшэєё
271Bh F arctgF ARCTG1└ЁъЄрэухэё
281Ch F sinF SIN1╤шэєё
291Dh F cosF COS1╩юёшэєё
301Eh F tgF TG1╥рэухэё
311Fh     
3220h"яЁюсхы"F πF PI1╟рэхёхэшх т ёЄхъ ъюэёЄрэЄ√ π (3,14159...)
3321h!F √F SQRT1╩трфЁрЄэ√щ ъюЁхэ№
3422h"F x2F X^21┬ючтхфхэшх т ътрфЁрЄ
3523h#F 1/xF 1/X1╬сЁрЄэр  тхышўшэр
3624h$F xyF X^Y1┬ючтхфхэшх x т ёЄхяхэ№ y
3725h%F R1╩юы№Ўхтюх яхЁхфтшцхэшх шэЇюЁьрЎшш т ёЄхъх
3826h&K ╠→├K M->D1╧хЁхтюф тхышўшэ шч ЇюЁьрЄр ╠ т ЇюЁьрЄ
3927h'K -K -1└трЁшщэ√щ юёЄрэют
4028h(K ╚╧╨├K PRGM1╤ўшЄ√трэшх срщЄр шч ярь Єш яЁюуЁрьь
4129h)K ÷K /1└трЁшщэ√щ юёЄрэют
422Ah*K ╠╤ ├K MS->D1╧хЁхтюф тхышўшэ шч ЇюЁьрЄр ╠╤ т ЇюЁьрЄ ├
432Bh+    
442Ch,    
452Dh-    
462Eh.    
472Fh/    
4830h0K ├→╠╤K D->MS1╧хЁхтюф тхышўшэ шч ЇюЁьрЄр ├ т ЇюЁьрЄ ╠╤
4931h1K |x|K ABS1└сёюы■Єэюх чэрўхэшх
5032h2K ╟═K SGN1╬яЁхфхыхэшх чэрър ўшёыр
5133h3K ├→╠K D->M1╧хЁхтюф тхышўшэ шч ЇюЁьрЄр ├ т ЇюЁьрЄ ╠
5234h4K [x]K INT1┬√фхыхэшх Ўхыющ ўрёЄш
5335h5K {x}K FRAC1┬√фхыхэшх фЁюсэющ ўрёЄш
5436h6K maxK MAX1╬яЁхфхыхэшх ьръёшьры№эюую чэрўхэш 
5537h7K ANDK AND1╦юушўхёъюх єьэюцхэшх
5638h8K ORK OR1╦юушўхёъюх ёыюцхэшх
5739h9K XORK XOR1╦юушўхёъюх ёыюцхэшх яю ьюфєы■ 2
583Ah:K NOTK NOT1╦юушўхёър  шэтхЁёш 
593Bh;K ╤╫K RAN1├хэхЁрЎш  ёыєўрщэюую ўшёыр юЄ 0 фю 1
603Ch<    
613Dh=    
623Eh>    
633Fh?    
6440h@╧ 0M 01╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ 0
6541hA╧ 1M 11- " - т ЁхушёЄЁ 1
6642hB╧ 2M 21- " - т ЁхушёЄЁ 2
6743hC╧ 3M 31- " - т ЁхушёЄЁ 3
6844hD╧ 4M 41- " - т ЁхушёЄЁ 4
6945hE╧ 5M 51- " - т ЁхушёЄЁ 5
7046hF╧ 6M 61- " - т ЁхушёЄЁ 6
7147hG╧ 7M 71- " - т ЁхушёЄЁ 7
7248hH╧ 8M 81- " - т ЁхушёЄЁ 8
7349hI╧ 9M 91- " - т ЁхушёЄЁ 9
744AhJ╧ AM A1- " - т ЁхушёЄЁ A
754BhK╧ BM B1- " - т ЁхушёЄЁ B
764ChL╧ CM C1- " - т ЁхушёЄЁ C
774DhM╧ DM D1- " - т ЁхушёЄЁ D
784EhN╧ EM E1- " - т ЁхушёЄЁ E
794FhO╨ ╧P M2╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ√ юЄ 0 фю 99
8050hP╤/╧R/S1╬яхЁрЎш  юёЄрэютъш ш яєёъ т√ўшёыхэшщ
8151hQ┴╧GOTO2┴хчєёыютэ√щ яхЁхїюф т яЁхфхырї ёЄЁрэшЎ√
8252hR┬/╬RTN1┬ючтЁрЄ шч яюфяЁюуЁрьь√ шыш яхЁхїюф эр эєыхтющ рфЁхё ёЄЁрэшЎ√
8353hS╧╧GSB2╧хЁхїюф эр яюфяЁюуЁрььє т яЁхфхырї ёЄЁрэшЎ√
8454hTK ═╬╧K NOP1═хЄ юяхЁрЎшш
8555hUK ▌╩╨K SCR1╬сэютыхэшх ¤ъЁрэр
8656hVK ├╨╘K GRPH1┬√тюф уЁрЇшўхёъющ шэЇюЁьрЎшш
8757hWF x≠0F X!=02╧хЁхїюф яю єёыютш■ x≠0т яЁхфхырї ёЄЁрэшЎ√
8858hXF L2F L22╬ЁурэшчрЎш  Ўшъыр ё ЁхушёЄЁюь 2 т яЁхфхырї ёЄЁрэшЎ√
8959hYF x≥0F X>=02╧хЁхїюф яю єёыютш■ x≥0 т яЁхфхырї ёЄЁрэшЎ√
905AhZF L3F L32╬ЁурэшчрЎш  Ўшъыр ё ЁхушёЄЁюь 3 т яЁхфхырї ёЄЁрэшЎ√
915Bh[F L1F L12╬ЁурэшчрЎш  Ўшъыр ё ЁхушёЄЁюь 1 т яЁхфхырї ёЄЁрэшЎ√
925Ch\F x<0F X<02╧хЁхїюф яю єёыютш■ x<0 т яЁхфхырї ёЄЁрэшЎ√
935Dh]F L0F L02╬ЁурэшчрЎш  Ўшъыр ё ЁхушёЄЁюь 0 т яЁхфхырї ёЄЁрэшЎ√
945Eh^F x=0F X=02╧хЁхїюф яю єёыютш■ x=0 т яЁхфхырї ёЄЁрэшЎ√
955Fh_    
9660h`╚╧ 0RM 01┬√чют т X ёюфхЁцшьюую ЁхушёЄЁр 0
9761ha╚╧ 1RM 11-"- ЁхушёЄЁр 1
9862hb╚╧ 2RM 21-"- ЁхушёЄЁр 2
9963hc╚╧ 3RM 31-"- ЁхушёЄЁр 3
10064hd╚╧ 4RM 41-"- ЁхушёЄЁр 4
10165he╚╧ 5RM 51-"- ЁхушёЄЁр 5
10266hf╚╧ 6RM 61-"- ЁхушёЄЁр 6
10367hg╚╧ 7RM 71-"- ЁхушёЄЁр 7
10468hh╚╧ 8RM 81-"- ЁхушёЄЁр 8
10569hi╚╧ 9RM 91-"- ЁхушёЄЁр 9
1066Ahj╚╧ ARM A1-"- ЁхушёЄЁр A
1076Bhk╚╧ BRM B1-"- ЁхушёЄЁр B
1086Chl╚╧ CRM C1-"- ЁхушёЄЁр C
1096Dhm╚╧ DRM D1-"- ЁхушёЄЁр D
1106Ehn╚╧ ERM E1-"- ЁхушёЄЁр E
1116FhoP ╚╧P RM2┬√чют т X ёюфхЁцшьюую ЁхушёЄЁют юЄ 0 фю 99
11270hpK x≠0 0K X!=0 01╩юётхээ√щ яхЁхїюф яю єёыютш■ x≠0 яю ёюфхЁцшьюьє рфЁхёэюую ЁхушёЄЁр 0
11371hqK x≠0 1K X!=0 11-"- ЁхушёЄЁр 1
11472hrK x≠0 2K X!=0 21-"- ЁхушёЄЁр 2
11573hsK x≠0 3K X!=0 31-"- ЁхушёЄЁр 3
11674htK x≠0 4K X!=0 41-"- ЁхушёЄЁр 4
11775huK x≠0 5K X!=0 51-"- ЁхушёЄЁр 5
11876hvK x≠0 6K X!=0 61-"- ЁхушёЄЁр 6
11977hwK x≠0 7K X!=0 71-"- ЁхушёЄЁр 7
12078hxK x≠0 8K X!=0 81-"- ЁхушёЄЁр 8
12179hyK x≠0 9K X!=0 91-"- ЁхушёЄЁр 9
1227AhzK x≠0 AK X!=0 A1-"- ЁхушёЄЁр A
1237Bh{K x≠0 BK X!=0 B1-"- ЁхушёЄЁр B
1247Ch|K x≠0 CK X!=0 C1-"- ЁхушёЄЁр C
1257Dh}K x≠0 DK X!=0 D1-"- ЁхушёЄЁр D
1267Eh~K x≠0 EK X!=0 E1-"- ЁхушёЄЁр E
1277FhPK x≠0PK X≠02╩юётхээ√щ яхЁхїюф яю єёыютш■ x≠0 яю ёюфхЁцшьюьє рфЁхёэ√ї ЁхушёЄЁют юЄ 0 фю 99
12880hK ┴╧ 0K GOTO 01╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ёюфхЁцшьюьє рфЁхёэюую ЁхушёЄЁр 0
12981hK ┴╧ 1K GOTO 11-"- ЁхушёЄЁр 1
13082hK ┴╧ 2K GOTO 21-"- ЁхушёЄЁр 2
13183hK ┴╧ 3K GOTO 31-"- ЁхушёЄЁр 3
13284hK ┴╧ 4K GOTO 41-"- ЁхушёЄЁр 4
13385hK ┴╧ 5K GOTO 51-"- ЁхушёЄЁр 5
13486hK ┴╧ 6K GOTO 61-"- ЁхушёЄЁр 6
13587hK ┴╧ 7K GOTO 71-"- ЁхушёЄЁр 7
13688hK ┴╧ 8K GOTO 81-"- ЁхушёЄЁр 8
13789hK ┴╧ 9K GOTO 91-"- ЁхушёЄЁр 9
1388AhK ┴╧ AK GOTO A1-"- ЁхушёЄЁр A
1398BhK ┴╧ BK GOTO B1-"- ЁхушёЄЁр B
1408ChK ┴╧ CK GOTO C1-"- ЁхушёЄЁр C
1418DhK ┴╧ DK GOTO D1-"- ЁхушёЄЁр D
1428EhK ┴╧ EK GOTO E1-"- ЁхушёЄЁр E
1438FhPK ┴╧PK GOTO2╩юётхээ√щ схчєёыютэ√щ яхЁхїюф яю ёюфхЁцшьюьє рфЁхёэ√ї ЁхушёЄЁют юЄ 0 фю 99
14490hK x≥0 0K X>=0 01╩юётхээ√щ яхЁхїюф яю єёыютш■ x≥0 яю ёюфхЁцшьюьє рфЁхёэюую ЁхушёЄЁр 0
14591hK x≥0 1K X>=0 11-"- ЁхушёЄЁр 1
14692hK x≥0 2K X>=0 21-"- ЁхушёЄЁр 2
14793hK x≥0 3K X>=0 31-"- ЁхушёЄЁр 3
14894hK x≥0 4K X>=0 41-"- ЁхушёЄЁр 4
14995hK x≥0 5K X>=0 51-"- ЁхушёЄЁр 5
15096hK x≥0 6K X>=0 61-"- ЁхушёЄЁр 6
15197hK x≥0 7K X>=0 71-"- ЁхушёЄЁр 7
15298hK x≥0 8K X>=0 81-"- ЁхушёЄЁр 8
15399hK x≥0 9K X>=0 91-"- ЁхушёЄЁр 9
1549AhK x≥0 AK X>=0 A1-"- ЁхушёЄЁр A
1559BhK x≥0 BK X>=0 B1-"- ЁхушёЄЁр B
1569ChK x≥0 CK X>=0 C1-"- ЁхушёЄЁр C
1579DhK x≥0 DK X>=0 D1-"- ЁхушёЄЁр D
1589EhK x≥0 EK X>=0 E1-"- ЁхушёЄЁр E
1599FhPK x≥0PK X>=02╩юётхээ√щ яхЁхїюф яю єёыютш■ x≥0 яю ёюфхЁцшьюьє рфЁхёэ√ї ЁхушёЄЁют юЄ 0 фю 99
1600A0hрK ╧╧ 0K GSB 01╩юётхээ√щ яхЁхїюф эр яюфяЁюуЁрььє яю ёюфхЁцшьюьє рфЁхёэюую ЁхушёЄЁр 0
1610A1hсK ╧╧ 1K GSB 11-"- ЁхушёЄЁр 1
1620A2hтK ╧╧ 2K GSB 21-"- ЁхушёЄЁр 2
1630A3hуK ╧╧ 3K GSB 31-"- ЁхушёЄЁр 3
1640A4hфK ╧╧ 4K GSB 41-"- ЁхушёЄЁр 4
1650A5hхK ╧╧ 5K GSB 51-"- ЁхушёЄЁр 5
1660A6hцK ╧╧ 6K GSB 61-"- ЁхушёЄЁр 6
1670A7hчK ╧╧ 7K GSB 71-"- ЁхушёЄЁр 7
1680A8hшK ╧╧ 8K GSB 81-"- ЁхушёЄЁр 8
1690A9hщK ╧╧ 9K GSB 91-"- ЁхушёЄЁр 9
1700AAhъK ╧╧ AK GSB A1-"- ЁхушёЄЁр A
1710ABhыK ╧╧ BK GSB B1-"- ЁхушёЄЁр B
1720AChьK ╧╧ CK GSB C1-"- ЁхушёЄЁр C
1730ADhэK ╧╧ DK GSB D1-"- ЁхушёЄЁр D
1740AEhюK ╧╧ EK GSB E1-"- ЁхушёЄЁр E
1750AFhяPK ╧╧PK GSB2╩юётхээ√щ яхЁхїюф эр яюфяЁюуЁрььє яю ёюфхЁцшьюьє рфЁхёэ√ї ЁхушёЄЁют юЄ 0 фю 99
1760B0h K ╧ 0K M 01╩юётхээр  чряшё№ ёюфхЁцшьюую ЁхушёЄЁр X яю ёюфхЁцшьюьє рфЁхёэюую ЁхушёЄЁр 0
1770B1h K ╧ 1K M 11-"- ЁхушёЄЁр 1
1780B2h K ╧ 2K M 21-"- ЁхушёЄЁр 2
1790B3h K ╧ 3K M 31-"- ЁхушёЄЁр 3
1800B4h K ╧ 4K M 41-"- ЁхушёЄЁр 4
1810B5h K ╧ 5K M 51-"- ЁхушёЄЁр 5
1820B6h K ╧ 6K M 61-"- ЁхушёЄЁр 6
1830B7h K ╧ 7K M 71-"- ЁхушёЄЁр 7
1840B8h K ╧ 8K M 81-"- ЁхушёЄЁр 8
1850B9h K ╧ 9K M 91-"- ЁхушёЄЁр 9
1860BAh K ╧ AK M A1-"- ЁхушёЄЁр A
1870BBh K ╧ BK M B1-"- ЁхушёЄЁр B
1880BCh K ╧ CK M C1-"- ЁхушёЄЁр C
1890BDh K ╧ DK M D1-"- ЁхушёЄЁр D
1900BEh K ╧ EK M E1-"- ЁхушёЄЁр E
1910BFh PK ╧PK M2╩юётхээр  чряшё№ ёюфхЁцшьюую ЁхушёЄЁр X яю ёюфхЁцшьюьє рфЁхёэ√ї ЁхушёЄЁют юЄ 0 фю 99
1920C0h K x<0 0K X<0 01╩юётхээ√щ яхЁхїюф яю єёыютш■ x<0 яю ёюфхЁцшьюьє рфЁхёэюую ЁхушёЄЁр 0
1930C1h K x<0 1K X<0 11-"- ЁхушёЄЁр 1
1940C2h K x<0 2K X<0 21-"- ЁхушёЄЁр 2
1950C3h K x<0 3K X<0 31-"- ЁхушёЄЁр 3
1960C4h K x<0 4K X<0 41-"- ЁхушёЄЁр 4
1970C5h K x<0 5K X<0 51-"- ЁхушёЄЁр 5
1980C6h K x<0 6K X<0 61-"- ЁхушёЄЁр 6
1990C7h K x<0 7K X<0 71-"- ЁхушёЄЁр 7
2000C8h K x<0 8K X<0 81-"- ЁхушёЄЁр 8
2010C9h K x<0 9K X<0 91-"- ЁхушёЄЁр 9
2020CAh K x<0 AK X<0 A1-"- ЁхушёЄЁр A
2030CBh K x<0 BK X<0 B1-"- ЁхушёЄЁр B
2040CCh K x<0 CK X<0 C1-"- ЁхушёЄЁр C
2050CDh K x<0 DK X<0 D1-"- ЁхушёЄЁр D
2060CEh K x<0 EK X<0 E1-"- ЁхушёЄЁр E
2070CFh PK x<0PK X<02╩юётхээ√щ яхЁхїюф яю єёыютш■ x<0 яю ёюфхЁцшьюьє рфЁхёэ√ї ЁхушёЄЁют юЄ 0 фю 99
2080D0h K ╚╧ 0K RM 01╩юётхээ√щ т√чют т ЁхушёЄЁ X яю ёюфхЁцшьюьє рфЁхёэюую ЁхушёЄЁр 0
2090D1h K ╚╧ 1K RM 11-"- ЁхушёЄЁр 1
2100D2h K ╚╧ 2K RM 21-"- ЁхушёЄЁр 2
2110D3h K ╚╧ 3K RM 31-"- ЁхушёЄЁр 3
2120D4h K ╚╧ 4K RM 41-"- ЁхушёЄЁр 4
2130D5h K ╚╧ 5K RM 51-"- ЁхушёЄЁр 5
2140D6h K ╚╧ 6K RM 61-"- ЁхушёЄЁр 6
2150D7h K ╚╧ 7K RM 71-"- ЁхушёЄЁр 7
2160D8h K ╚╧ 8K RM 81-"- ЁхушёЄЁр 8
2170D9h K ╚╧ 9K RM 91-"- ЁхушёЄЁр 9
2180DAh K ╚╧ AK RM A1-"- ЁхушёЄЁр A
2190DBh K ╚╧ BK RM B1-"- ЁхушёЄЁр B
2200DCh K ╚╧ CK RM C1-"- ЁхушёЄЁр C
2210DDh K ╚╧ DK RM D1-"- ЁхушёЄЁр D
2220DEh K ╚╧ EK RM E1-"- ЁхушёЄЁр E
2230DFh PK ╚╧PK RM2╩юётхээ√щ т√чют т ЁхушёЄЁ X яю ёюфхЁцшьюьє рфЁхёэ√ї ЁхушёЄЁют юЄ 0 фю 99
2240E0hЁK x=0 0K X=0 01╩юётхээ√щ яхЁхїюф яю єёыютш■ x=0 яю ёюфхЁцшьюьє рфЁхёэюую ЁхушёЄЁр 0
2250E1hёK x=0 1K X=0 11-"- ЁхушёЄЁр 1
2260E2hЄK x=0 2K X=0 21-"- ЁхушёЄЁр 2
2270E3hєK x=0 3K X=0 31-"- ЁхушёЄЁр 3
2280E4hЇK x=0 4K X=0 41-"- ЁхушёЄЁр 4
2290E5hїK x=0 5K X=0 51-"- ЁхушёЄЁр 5
2300E6hЎK x=0 6K X=0 61-"- ЁхушёЄЁр 6
2310E7hўK x=0 7K X=0 71-"- ЁхушёЄЁр 7
2320E8h°K x=0 8K X=0 81-"- ЁхушёЄЁр 8
2330E9hK x=0 9K X=0 91-"- ЁхушёЄЁр 9
2340EAh·K x=0 AK X=0 A1-"- ЁхушёЄЁр A
2350EBhK x=0 BK X=0 B1-"- ЁхушёЄЁр B
2360EChK x=0 CK X=0 C1-"- ЁхушёЄЁр C
2370EDh¤K x=0 DK X=0 D1-"- ЁхушёЄЁр D
2380EEhK x=0 EK X=0 E1-"- ЁхушёЄЁр E
2390EFh PK x=0PK X=02╩юётхээ√щ яхЁхїюф яю єёыютш■ x=0 яю ёюфхЁцшьюьє рфЁхёэ√ї ЁхушёЄЁют юЄ 0 фю 99
2400F0hи    
2410F1hP ┴╧P GOTO3┴хчєёыютэ√щ яхЁхїюф
2420F2h ╨╨ ┬/╬PP RTN1┬ючтЁрЄ шч яЁхЁ√трэш 
2430F3h P ╧╧P GSB3╧хЁхїюф эр яюфяЁюуЁрььє
2440F4h PP ╧PP M3╟ряшё№ ёюфхЁцшьюую ЁхушёЄЁр X т ЁхушёЄЁ√ юЄ 0 фю 9999
2450F5h     
2460F6h PP ╚╧PP RM3┬√чют т X ёюфхЁцшьюую ЁхушёЄЁют юЄ 0 фю 9999
2470F7h P x≠0P X!=03╧хЁхїюф яю єёыютш■ x≠0
2480F8h PF L2PF L23╬ЁурэшчрЎш  Ўшъыр ё ЁхушёЄЁюь 2
2490F9h P x≥0P X>=03╧хЁхїюф яю єёыютш■ x≥0
2500FAh PF L3PF L33╬ЁурэшчрЎш  Ўшъыр ё ЁхушёЄЁюь 3
2510FBh PF L1PF L13╬ЁурэшчрЎш  Ўшъыр ё ЁхушёЄЁюь 1
2520FCh P x<0P X<03╧хЁхїюф яю єёыютш■ x<0
2530FDh PF L0PF L03╬ЁурэшчрЎш  Ўшъыр ё ЁхушёЄЁюь 0
2540FEh P x=0P X=03╧хЁхїюф яю єёыютш■ x=0
2550FFh     
+
+
+
═╧╧ "╤┼╠╚╩╬" (383) 271-01-25 (ьэюуюърэры№э√щ)
+
+ + + + + diff --git a/programs/emulator/PrMK/trunk/docs/╨н╨Ъ╨Т╨Ь ╨н╨╗╨╡╨║╤В╤А╨╛╨╜╨╕╨║╨░ ╨Ь╨Ъ-152 ╨а╨н - ╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨н╨Т╨Ь_files/oarr0000.gif b/programs/emulator/PrMK/trunk/docs/╨н╨Ъ╨Т╨Ь ╨н╨╗╨╡╨║╤В╤А╨╛╨╜╨╕╨║╨░ ╨Ь╨Ъ-152 ╨а╨н - ╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨н╨Т╨Ь_files/oarr0000.gif new file mode 100644 index 0000000000..8028cfb86b Binary files /dev/null and b/programs/emulator/PrMK/trunk/docs/╨н╨Ъ╨Т╨Ь ╨н╨╗╨╡╨║╤В╤А╨╛╨╜╨╕╨║╨░ ╨Ь╨Ъ-152 ╨а╨н - ╨б╨╕╤Б╤В╨╡╨╝╨░ ╨║╨╛╨╝╨░╨╜╨┤ ╨н╨Т╨Ь_files/oarr0000.gif differ diff --git a/programs/emulator/PrMK/trunk/editbox_ex.mac b/programs/emulator/PrMK/trunk/editbox_ex.mac new file mode 100644 index 0000000000..938904c57c --- /dev/null +++ b/programs/emulator/PrMK/trunk/editbox_ex.mac @@ -0,0 +1,194 @@ + +ch_struc_size=36 +ed_struc_size=76 +ch_flag_en=10b + +ch_left equ [edi] ;координата начала рисования по х +ch_top equ [edi+2] ;координата начала рисования по у +ch_text_margin equ [edi+4] ;=4 расстояние от прямоугольника чек бокса до надписи +ch_size equ [edi+8] ;12 размер квадрата чек бокса +ch_color equ [edi+12] ;цвет внутри checkbox +ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно +ch_text_color equ [edi+20];[edi+4] ;цвет текста +ch_text_ptr equ [edi+24] ;указатель на начало текстовой строки +ch_text_length equ [edi+28] +ch_flags equ [edi+32] ;флаги + +ed_width equ [edi] ;ширина компонента +ed_left equ [edi+4] ;положение по оси х +ed_top equ [edi+8] ;положение по оси у +ed_color equ [edi+12] ;цвет фона компонента +shift_color equ [edi+16] ;=0x6a9480 для примера возьем желеный цвет бокса +ed_focus_border_color equ [edi+20] ;цвет рамки компонента +ed_blur_border_color equ [edi+24] ;цвет не активного компонента +ed_text_color equ [edi+28] ;цвет текста +ed_max equ [edi+32] ;кол-во символов которые можно максимально ввести +ed_text equ [edi+36] ;указатель на буфер +ed_mouse_variable equ [edi+40] ; указатель на переменную для бокса/группы +ed_flags equ [edi+44] ;флаги +bp_flags equ [ebp+44] ;в некоторых процедурах edi используется, взамен указатель храниться в ebp +ed_size equ [edi+48] ;кол-во символов +bp_size equ [ebp+48] ;кол-во симвполов, для адресации испльзуется ebpб edi занят +ed_pos equ [edi+52] ;позиция курсора +ed_offset equ [edi+56] ;смещение +cl_curs_x equ [edi+60] ;предыдущее координата курсора по х +cl_curs_y equ [edi+64] ;предыдущее координата курсора по у +ed_shift_pos equ [edi+68] ;положение курсора +ed_shift_pos_old equ [edi+72] ;старое положение курсора + +ed_struc_size=76 +struc edit_box width,left,top,color,shift_color,focus_border_color,\ + blur_border_color,text_color,max,text,mouse_variable,flags,size,pos +{ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;Bit mask from editbox +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +ed_figure_only= 1000000000000000b ;одни символы +ed_always_focus= 100000000000000b +ed_focus= 10b ;фокус приложения +ed_shift_on= 1000b ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift +ed_shift_on_off=1111111111110111b +ed_shift= 100b ;включается при нажатии на shift т.е. если нажимаю +ed_shift_off= 1111111111111011b +ed_shift_bac= 10000b ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение +ed_shift_bac_cl=1111111111101111b ;очистка при удалении выделения +ed_shift_cl= 1111111111100011b +ed_shift_mcl= 1111111111111011b +ed_left_fl= 100000b +ed_right_fl= 1111111111011111b +ed_offset_fl= 1000000b +ed_offset_cl= 1111111110111111b +ed_insert= 10000000b +ed_insert_cl= 1111111101111111b +ed_mouse_on = 100000000b +ed_mous_adn_b= 100011000b +ed_mouse_on_off=1111111011111111b +ed_height=14 ; высота + +.width dd width +.left dd left +.top dd top +.color dd color +.shift_color dd shift_color +.focus_border_color dd focus_border_color +.blur_border_color dd blur_border_color +.text_color dd text_color +.max dd max +.text dd text +.mouse_variable dd mouse_variable +.flags dd flags+0 +.size dd size+0 +.pos dd pos+0 +.offset dd 0 +.cl_curs_x dd 0 +.cl_curs_y dd 0 +.shift dd 0 +.shift_old dd 0 +} +macro edit_boxes_set_sys_color start,end,color_table +{ + mov edi,start + mov ecx,((end-start)/ed_struc_size) + mov esi,color_table +@@: + mov eax,dword [esi+36] + mov ebx,dword [esi+20] + push dword eax + pop dword ed_focus_border_color + shr bh,1 + shr bl,1 + shr ah,1 + shr al,1 + add ah,bh + add al,bl + ror eax,16 + ror ebx,16 + shr bl,1 + shr al,1 + add al,bl + ror eax,16 + mov dword ed_blur_border_color,eax + mov dword shift_color,eax + add edi,ed_struc_size + loop @b +} +macro get_sys_colors col_buf +{ + ;mov eax,48 + push 48 + pop eax + ;mov ebx,3 + push 3 + pop ebx + ;mov ecx,col_buf + push col_buf + pop ecx + ;mov edx,40 + push 40 + pop edx + mcall +} +macro check_boxes_set_sys_color start,end,color_table +{ +ch_left equ [edi] ;координата начала рисования по х +ch_top equ [edi+2] ;координата начала рисования по у +ch_text_margin equ [edi+4] ;=4 расстояние от прямоугольника чек бокса до надписи +ch_size equ [edi+8] ;12 размер квадрата чек бокса +ch_color equ [edi+12] ;цвет внутри checkbox +ch_border_color equ [edi+16] ; or [edi+4] ;цвет рамки checkbox ее можно задать самостоятельно +ch_text_color equ [edi+20];[edi+4] ;цвет текста +ch_text_ptr equ [edi+24] ;указатель на начало текстовой строки +ch_text_length equ [edi+28] +ch_flags equ [edi+32] ;флаги + + +;ch_left equ [edi] ;координата начала рисования по х +;ch_top equ [edi+2] ;координата начала рисования по у +;ch_color equ [edi+4] ;цвет внутри checkbox +;ch_border_color equ [edi+8] ;цвет рамки checkbox +;ch_text_color equ [edi+12] ;цвет текста +;ch_text_ptr equ [edi+16] ;указатель на начало текстовой строки +;ch_text_length equ [edi+20] ;длина надписи (2^64 такой длины может быть текст) +;ch_flags equ [edi+24] ;флаги + + mov edi,start + mov ecx,((end-start)/ch_struc_size) + mov esi,color_table +@@: + push dword [esi+32] + pop dword ch_text_color + push dword [esi+36] + pop dword ch_border_color + add edi,ch_struc_size + loop @b +} +struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags +{ ;структура параметров для чек бокса +ch_flag_en=10b +.left: dw left ;+0 ;положение по х +.top: dw top ;положение по у +.ch_text_margin: dd ch_text_margin ;расстояние от прямоугольника чек бокса до надписи +.ch_size: dd ch_size ;размер квадрата чек бокса, для примера 12 +.color: dd color ;цвет внутри чекбокса +.border_color: dd border_color ;цвет рамки +.text_color: dd text_color ;цвет надписи +.text: dd text ;адрес в коде программы где расположен текст +.ch_text_length: dd ch_text_length ;длинна строки с символами +.flags: dd flags+0 ; флаги +} +struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags +{ ;структура параметров для чек бокса +op_flag_en=10b +.option_group: dd point_gr +.left: dw left ;+0 ;положение по х +.top: dw top ;положение по у +.ch_text_margin: dd op_text_margin ;расстояние от прямоугольника чек бокса до надписи +.ch_size: dd op_size ;размер квадрата чек бокса, для примера 12 +.color: dd color ;цвет внутри чекбокса +.border_color: dd border_color ;цвет рамки +.text_color: dd text_color ;цвет надписи +.text: dd text ;адрес в коде программы где расположен текст +.ch_text_length: dd op_text_length ;длинна строки с символами +.flags: dd flags+0 ; флаги +} + diff --git a/programs/emulator/PrMK/trunk/lang.inc b/programs/emulator/PrMK/trunk/lang.inc new file mode 100644 index 0000000000..30c0149bd9 --- /dev/null +++ b/programs/emulator/PrMK/trunk/lang.inc @@ -0,0 +1 @@ +lang fix ru \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/macroPRMK.inc b/programs/emulator/PrMK/trunk/macroPRMK.inc new file mode 100644 index 0000000000..8a8189a98a --- /dev/null +++ b/programs/emulator/PrMK/trunk/macroPRMK.inc @@ -0,0 +1,48 @@ +macro buttabnum a0,a1,a2,a3,a4 +{ + test [flags],(1 shl 5) + jnz .prg + test [flags],(1 shl 3) + jnz .a1 +if a4 + test [flags],(1 shl 4) + jnz .a4 +endf + test [flags],(1 shl 11) + jnz .a2 + test [flags],(1 shl 12) + jnz .a3 + test [flags],(1 shl 9) + jnz .prg + mov eax,a0 + jmp but_table.to_opcode + .a1: mov eax,a1 + jmp but_table.to_opcode + .a2: mov eax,a2 + jmp but_table.to_opcode + .a3: mov eax,a3 + jmp but_table.to_opcode + .prg: + test [flags],(1 shl 8) + jz @f + add [dop8],a0 + jmp but_table.dop8 + @@: test [flags],(1 shl 9) + jz @f + mov al,a0 + jmp but_table.dop9 + @@: movzx eax,[schk] + add eax,PMEM + inc [schk] + test [flags],(1 shl 3) + jnz @f + mov byte [eax],a0 + ret + @@: mov byte [eax],a1 + btr [flags],3 + ret +if a4 +.a4: mov eax,a4 + jmp but_table.to_opcode +endf +} \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/macros.inc b/programs/emulator/PrMK/trunk/macros.inc new file mode 100644 index 0000000000..8b2870da76 --- /dev/null +++ b/programs/emulator/PrMK/trunk/macros.inc @@ -0,0 +1,543 @@ +@^ fix macro comment { +^@ fix } + +; ------------------------- +macro library [lname,fname] +{ + forward + dd __#lname#_library_table__,__#lname#_library_name__ + common + dd 0 + forward + align 4 + __#lname#_library_name__ db fname,0 +} + +macro import lname,[name,sname] +{ + common + align 4 + __#lname#_library_table__: + forward + if used name + name dd __#name#_import_name__ + end if + common + dd 0 + forward + if used name + align 4 + __#name#_import_name__ db sname,0 + end if +} + +macro export [name,sname] +{ + forward + dd __#name#_export_name__,name + common + dd 0 + forward + align 4 + __#name#_export_name__ db sname,0 +} +; ------------------------- + +macro m2m dest,src { + push src + pop dest +} + + +macro iglobal { + IGlobals equ IGlobals, + macro __IGlobalBlock { } + +macro uglobal { + UGlobals equ UGlobals, + macro __UGlobalBlock { } + +endg fix } ; Use endg for ending iglobal and uglobal blocks. + + +macro IncludeIGlobals{ + macro IGlobals dummy,[n] \{ __IGlobalBlock + purge __IGlobalBlock \} + match I, IGlobals \{ I \} } + +macro IncludeUGlobals{ + macro UGlobals dummy,[n] \{ + \common + \local begin, size + begin = $ + virtual at $ + \forward + __UGlobalBlock + purge __UGlobalBlock + \common + size = $ - begin + end virtual + rb size + \} + match U, UGlobals \{ U \} } + +uglobal +endg + +iglobal +endg + + +; new application structure +macro meos_app_start + { + use32 + org 0x0 + + db 'MENUET01' + dd 0x01 + dd __start + dd __end + dd __memory + dd __stack + + if used __params & ~defined __params + dd __params + else + dd 0x0 + end if + + dd 0x0 + } +MEOS_APP_START fix meos_app_start + +macro code + { + __start: + } +CODE fix code + +macro data + { + __data: + IncludeIGlobals + } +DATA fix data + +macro udata + { + if used __params & ~defined __params + __params: + db 0 + __end: + rb 255 + else + __end: + end if + __udata: + IncludeUGlobals + } +UDATA fix udata + +macro meos_app_end + { + align 32 + rb 2048 + __stack: + __memory: + } +MEOS_APP_END fix meos_app_end + + +; macro for defining multiline text data +struc mstr [sstring] + { + forward + local ssize + virtual at 0 + db sstring + ssize = $ + end virtual + dd ssize + db sstring + common + dd -1 + } + +; macro for defining multiline text data +struc mls [sstring] + { + forward + local ssize + virtual at 0 + db sstring ; mod + ssize = $ + end virtual + db ssize + db sstring + common + db -1 ; mod + } + + + +; strings +macro sz name,[data] { ; from MFAR [mike.dld] + common + if used name + name db data + .size = $-name + end if +} + +macro lsz name,[lng,data] { ; from MFAR [mike.dld] + common + if used name + label name + forward + if lang eq lng + db data + end if + common + .size = $-name + end if +} + +macro szc name,elsz,[data] { ; from MFAR [mike.dld] + common + local s,m + m = 0 + if used name + label name + forward + virtual at 0 + db data + s = $ + end virtual + d#elsz s + if m < s + m = s + end if + db data + common + .size = $-name + .maxl = m + end if +} + +macro lszc name,elsz,[lng,data] { ; from MFAR [mike.dld] + common + local s,m,c + m = 0 + c = 0 + if used name + label name + forward + if lang eq lng + virtual at 0 + db data + s = $ + end virtual + d#elsz s + if m < s + m = s + end if + db data + c = c+1 + end if + common + .size = $-name + .maxl = m + .count = c + end if +} + + +; easy system call macro +macro mpack dest, hsrc, lsrc +{ + if (hsrc eqtype 0) & (lsrc eqtype 0) + mov dest, (hsrc) shl 16 + lsrc + else + if (hsrc eqtype 0) & (~lsrc eqtype 0) + mov dest, (hsrc) shl 16 + add dest, lsrc + else + mov dest, hsrc + shl dest, 16 + add dest, lsrc + end if + end if +} + +macro __mov reg,a,b { ; mike.dld + if (~a eq)&(~b eq) + mpack reg,a,b + else if (~a eq)&(b eq) + mov reg,a + end if +} + + +include 'config.inc' +__CPU_type equ p5 +SYSENTER_VAR equ 0 + +macro mcall a,b,c,d,e,f { ; mike.dld, updated by Ghost for Fast System Calls + local ..ret_point + __mov eax,a + __mov ebx,b + __mov ecx,c + __mov edx,d + __mov esi,e + __mov edi,f + + if __CPU_type eq p5 + int 0x40 + else + if __CPU_type eq p6 + push ebp + mov ebp, esp + push ..ret_point ; it may be 2 or 5 byte + sysenter + ..ret_point: + pop edx + pop ecx + + else + if __CPU_type eq k6 + push ecx + syscall + pop ecx + else + display 'ERROR : unknown CPU type (set to p5)', 10, 13 + __CPU_type equ p5 + int 0x40 + end if + end if + end if +} + + +; ------------------------- +macro header a,[b] { + common + use32 + org 0 + db 'MENUET',a + forward + if b eq + dd 0 + else + dd b + end if } +macro section name { align 16 + label name } +macro func name { + if ~used name + display 'FUNC NOT USED: ',`name,13,10 + else + align 4 + name: + ;diff16 `name,0,name +;pushad +;pushfd +;dps `name +;newline +;mcall 5,1 +;popfd +;popad +} +macro endf { end if } + +macro diff16 title,l1,l2 + { + local s,d + s = l2-l1 + display title,': 0x' + repeat 8 + d = '0' + s shr ((8-%) shl 2) and $0F + if d > '9' + d = d + 'A'-'9'-1 + end if + display d + end repeat + display 13,10 + } + +macro diff10 title,l1,l2 + { + local s,d,z,m + s = l2-l1 + z = 0 + m = 1000000000 + display title,': ' + repeat 10 + d = '0' + s / m + s = s - (s/m)*m + m = m / 10 + if d <> '0' + z = 1 + end if + if z <> 0 + display d + end if + end repeat + display 13,10 + } + +; optimize the code for size +__regs fix + +macro add arg1,arg2 + { + if (arg2 eqtype 0) + if (arg2) = 1 + inc arg1 + else + add arg1,arg2 + end if + else + add arg1,arg2 + end if + } + +macro sub arg1,arg2 + { + if (arg2 eqtype 0) + if (arg2) = 1 + dec arg1 + else + sub arg1,arg2 + end if + else + sub arg1,arg2 + end if + } + +macro mov arg1,arg2 + { + if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0')) + if (arg2) = 0 + xor arg1,arg1 + else if (arg2) = 1 + xor arg1,arg1 + inc arg1 + else if (arg2) = -1 + or arg1,-1 + else if (arg2) > -128 & (arg2) < 128 + push arg2 + pop arg1 + else + mov arg1,arg2 + end if + else + mov arg1,arg2 + end if + } + + +macro RGB [a] { + common + match (r=,g=,b),a \{ + \dd ((r) shl 16) or ((g) shl 8) or (b) + \} +} + + +struc POINT _t,_dx,_dy { + .x _t _dx + .y _t _dy +} + +; structure definition helper +include 'struct.inc' + +struct RECT + left dd ? + top dd ? + right dd ? + bottom dd ? +ends + +struct BOX + left dd ? + top dd ? + width dd ? + height dd ? +ends + +; structures used in MeOS +struct process_information + cpu_usage dd ? ; +0 + window_stack_position dw ? ; +4 + window_stack_value dw ? ; +6 + dw ? ; +8 + process_name rb 12 ; +10 + memory_start dd ? ; +22 + used_memory dd ? ; +26 + PID dd ? ; +30 + box BOX ; +34 + slot_state dw ? ; +50 + dw ? ; +52 + client_box BOX ; +54 + wnd_state db ? ; +70 + rb (1024-71) +ends + +struct system_colors + frame dd ? + grab dd ? + grab_button dd ? + grab_button_text dd ? + grab_text dd ? + work dd ? + work_button dd ? + work_button_text dd ? + work_text dd ? + work_graph dd ? +ends + +struct FILEDATE + Second db ? + Minute db ? + Hour db ? + db ? + Day db ? + Month db ? + Year dw ? +ends + +struct FILEINFO + Attributes dd ? + IsUnicode db ? + db 3 dup(?) + DateCreate FILEDATE + DateAccess FILEDATE + DateModify FILEDATE + Size dq ? +ends + +; constants + +; events +EV_IDLE = 0 +EV_TIMER = 0 +EV_REDRAW = 1 +EV_KEY = 2 +EV_BUTTON = 3 +EV_EXIT = 4 +EV_BACKGROUND = 5 +EV_MOUSE = 6 +EV_IPC = 7 +EV_STACK = 8 + +; event mask bits for function 40 +EVM_REDRAW = 1b +EVM_KEY = 10b +EVM_BUTTON = 100b +EVM_EXIT = 1000b +EVM_BACKGROUND = 10000b +EVM_MOUSE = 100000b +EVM_IPC = 1000000b +EVM_STACK = 10000000b diff --git a/programs/emulator/PrMK/trunk/opcodes.inc b/programs/emulator/PrMK/trunk/opcodes.inc new file mode 100644 index 0000000000..15707da327 --- /dev/null +++ b/programs/emulator/PrMK/trunk/opcodes.inc @@ -0,0 +1,1444 @@ + align 4 + +OPCODEtable: + +dd _00,_00,_00,_00,_00,_00,_00,_00 ;00-07 +dd _00,_00,_0A,_0B,_0C,_0D,_0E,_0F ;08-0f +dd _10,_11,_12,_13,_14,_15,_16,_17 ;10-17 +dd _18,_19,_1A,_1B,_1C,_1D,_1E,_1f ;18-1f +dd _20,_21,_22,_23,_24,_25,_1f,_1f ;20-27 +dd _1f,_1f,_1f,_1f,_1f,_1f,_1f,_1f ;28-2f +dd _1f,_31,_32,_1f,_34,_35,_36,_1f ;30-37 +dd _1f,_1f,_1f,_3B,_1f,_1f,_1f,_1f ;38-3f +times 16 dd _40 ;40-4f +dd _50,_51,_52,_53,_54,_1f,_1f,_57 ;50-57 +dd _58,_59,_5A,_5B,_5C,_5D,_5E,_1f ;58-5f +times 16 dd _60 ;60-6f +times 16 dd _70 ;70-7f +times 16 dd _80 ;80-8f +times 16 dd _90 ;90-9f +times 16 dd _A0 ;a0-af +times 16 dd _B0 ;b0-bf +times 16 dd _C0 ;c0-cf +times 16 dd _D0 ;d0-df +times 16 dd _E0 ;e0-ef +times 16 dd _1f ;f0-ff + + +move1 db 0 +move2 db 0 +move1dot db 0 + +_1f: ret + +;************************************* + +_3B: + mcall 3 + shl eax,16 + shr eax,16 + mov [perem],eax + fild [perem] + mcall 26,9 + shl eax,16 + shr eax,18 + mov [perem],eax + fild [perem] + fcom st1 + jnc @f + fdivrp + mov [perem],10 + fild [perem] + fdivp + jmp .1 + @@: fdivp + .1: fld qword [S.Z] + fstp qword [S.T] + fld qword [S.Y] + fstp qword [S.Z] + fld qword [S.X] + fst qword [S.Y] + fstp qword [S.X1] + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],4 + ret + +_36: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.Y] + fld qword [S.X] + fst qword [S.X1] + + fcom st1 + fstsw ax + sahf + jc @f + fstp qword [S.X] + fstp st0 + jmp .1 + @@: fstp st0 + fstp qword [S.X] + .1: + fld qword [S.Z] + fstp qword [S.Y] + fld qword [S.T] + fstp qword [S.Z] +; fldz +; fstp qword [S.T] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + ret + +_35: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + fldz + fcomp st1 + fstsw ax + sahf + jz @f + jc @f + frndint + fcom qword [S.X] + fstsw ax + sahf + jnc .0 + fld1 + faddp + jmp .0 + @@: frndint + fcom qword [S.X] + fstsw ax + sahf + jc .0 + jz .0 + fld1 + fsubp + .0: fld qword [S.X] + fsubrp + fst qword [S.X] + call ftos + call draw_string + call draw_stack + bts [flags],10 + btr [flags],6 + ret + + +_34: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + fldz + fcomp st1 + fstsw ax + sahf + jz @f + jc @f + frndint + fcom qword [S.X] + fstsw ax + sahf + jnc .0 + fld1 + faddp + jmp .0 + @@: frndint + fcom qword [S.X] + fstsw ax + sahf + jc .0 + jz .0 + fld1 + fsubp + .0: fst qword [S.X] + call ftos + call draw_string + call draw_stack + bts [flags],10 + btr [flags],6 + ret + +_32: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fstp qword [S.X1] + fldz + fcomp qword [S.X] + fstsw ax + sahf + fld1 + jz @f + jc @f + fchs + @@: fst qword [S.X] + call ftos + call draw_string + call draw_stack + bts [flags],10 + btr [flags],6 + ret + +_31: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + fabs + fst qword [S.X] + call ftos + call draw_string + call draw_stack + bts [flags],10 + btr [flags],6 + ret + +;************************************ +_E0: + ;x=0 ;0!=x + inc [schk] + @@: fldz + fcomp qword [S.X] + fstsw ax + sahf + jnz @f + ret + @@: sub eax,OPCODEtable + shr eax,2 + sub eax,0xE0;90 + shl eax,3 + add eax,R.0 + fld qword [eax] + cmp ebx,6 + jge @f + fld1 + cmp ebx,4 + jge .2 + fsubrp + jmp @f + .2: faddp + @@: fst qword [eax] + fabs + fistp [perem] + mov eax,[perem] + mov [schk],al + ret + +_D0: + inc [schk] + + sub eax,OPCODEtable + shr eax,2 + sub eax,0xD0 + mov ebx,eax + shl eax,3 + add eax,R.0 + fld qword [eax] + cmp ebx,6 + ja @f + fld1 + cmp ebx,4 + jge .2 + fsubrp + jmp @f + .2: faddp + @@: frndint + fst qword [eax] + fabs + fistp [perem] + mov eax,[perem] + shl eax,31-4 + shr eax,31-4 + shl eax,3 + add eax,R.0 + + fld qword [eax] + + fld qword [S.Z] + fstp qword [S.T] + fld qword [S.Y] + fstp qword [S.Z] + fld qword [S.X] + fst qword [S.Y] + fstp qword [S.X1] + + fstp qword [S.X] + + call draw_registers + call draw_stack + bts [flags],10 + btr [flags],6 + ret + +_C0: + ;x<0 ;0=0 ;0>x + inc [schk] + @@: fldz + fcomp qword [S.X] + fstsw ax + sahf + jp @f + jz @f + jc @f + jmp .1 + @@: ret + .1: sub eax,OPCODEtable + shr eax,2 + sub eax,0x90 + shl eax,3 + add eax,R.0 + fld qword [eax] + cmp ebx,6 + jge @f + fld1 + cmp ebx,4 + jge .2 + fsubrp + jmp @f + .2: faddp + @@: fst qword [eax] + fabs + fistp [perem] + mov eax,[perem] + mov [schk],al + ret + +_80: + inc [schk] + sub eax,OPCODEtable + shr eax,2 + sub eax,0x80 + shl eax,3 + add eax,R.0 + fld qword [eax] + cmp ebx,6 + jge @f + fld1 + cmp ebx,4 + jge .2 + fsubrp + jmp @f + .2: faddp + @@: fst qword [eax] + fabs + fistp [perem] + mov eax,[perem] + mov [schk],al + ret + +_70: ;x!=0 ;x=0 + inc [schk] + @@: fldz + fcomp qword [S.X] + fstsw ax + sahf + jz @f + ret + @@: sub eax,OPCODEtable + shr eax,2 + sub eax,0x70 + mov ebx,eax + shl eax,3 + add eax,R.0 + fld qword [eax] + cmp ebx,6 + jge @f + fld1 + cmp ebx,4 + jge .2 + fsubrp + jmp @f + .2: faddp + @@: fst qword [eax] + fabs + fistp [perem] + mov eax,[perem] + mov [schk],al + ret + +_5D: + inc [schk] + fld qword [R.0] + fld1 + fsubp + fst qword [R.0] + fabs + fistp [perem] + mov eax,[perem] + test eax,eax + jz @f + movzx eax,[schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + jmp .1 + @@: inc [schk] + .1: call draw_registers + bts [flags],10 + btr [flags],6 + ret + +_5B: + inc [schk] + fld qword [R.1] + fld1 + fsubp + fst qword [R.1] + fabs + fistp [perem] + mov eax,[perem] + test eax,eax + jz @f + movzx eax,[schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + jmp .1 + @@: inc [schk] + .1: call draw_registers + bts [flags],10 + btr [flags],6 + ret + + +_5A: + inc [schk] + fld qword [R.3] + fld1 + fsubp + fst qword [R.3] + fabs + fistp [perem] + mov eax,[perem] + test eax,eax + jz @f + movzx eax,[schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + jmp .1 + @@: inc [schk] + .1: call draw_registers + bts [flags],10 + btr [flags],6 + ret + + +_58: ;F,L2 + inc [schk] + fld qword [R.2] + fld1 + fsubp + fst qword [R.2] + fabs + fistp [perem] + mov eax,[perem] + test eax,eax + jz @f + movzx eax,[schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + jmp .1 + @@: inc [schk] + .1: call draw_registers + bts [flags],10 + btr [flags],6 + ret + + + +_5E: ;x=0 +; bt [flags],0 +; jnc @f + inc [schk] + @@: fldz + fcomp qword [S.X] + fstsw ax + sahf + jnz @f + inc [schk] + ret + @@: movzx eax, byte [schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + ret + +_5C: ;x<0 +; bt [flags],0 +; jnc @f + inc [schk] + @@: fldz + fcomp qword [S.X] + fstsw ax + sahf + jc @f + jz @f + inc [schk] + ret + @@: movzx eax, byte [schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + ret + +_59: ;x>=0 +; bt [flags],0 +; jnc @f + inc [schk] + @@: fldz + fcomp qword [S.X] + fstsw ax + sahf + jp @f + jz @f + jc @f + jmp .1 + @@: inc [schk] + ret + .1: movzx eax, byte [schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + ret + +_57: ;x!=0 +; bt [flags],0 +; jnc @f + inc [schk] + @@: fldz + fcomp qword [S.X] + fstsw ax + sahf + jz @f + inc [schk] + ret + @@: movzx eax, byte [schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + ret + +_54: + inc [schk] + ret + +_53: bt [flags],0 + jnc @f + inc [schk] + mov al,[RS+3] + mov [RS+4],al + mov al,[RS+2] + mov [RS+3],al + mov al,[RS+1] + mov [RS+2],al + mov al,[RS+0] + mov [RS+1],al + mov al,[schk] + inc al + mov [RS+0],al + movzx eax,[schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + bts [flags],10 + btr [flags],6 + ret + @@: bts [flags],0 + movzx eax,[schk] + add eax,PMEM + movzx eax,byte [eax] + shl eax,2 + add eax,OPCODEtable + mov ebx,[eax] + call ebx + btr [flags],0 + call draw_schk + call draw_prog +ret + +_52: inc [schk] + bt [flags],0 + jnc @f + mov al,[RS+0] + mov [schk],al + mov al,[RS+1] + mov [RS+0],al + mov al,[RS+2] + mov [RS+1],al + mov al,[RS+3] + mov [RS+2],al + mov al,[RS+4] + mov [RS+3],al + mov byte [RS+4],0 + ret + @@: mov [schk],0 + call draw_prog + call draw_schk +ret + + +_51: +; bt [flags],0 +; jnc @f + inc [schk] + @@: movzx eax, byte [schk] + add eax,PMEM + mov al,[eax] + mov [schk],al + ret + + +_50: + btc [flags],0 + jc @f + ret + @@: inc [schk] + fld qword [S.X] + call ftos + call draw_string + call draw_registers + bts [flags],10 + btr [flags],6 + ret + +_60: + bt [flags],0 + jnc @f + inc [schk] + @@: sub eax,OPCODEtable + shr eax,2 + sub eax,0x60 + shl eax,3 + add eax,R.0 + fld qword [eax] + fld qword [S.Z] + fstp qword [S.T] + fld qword [S.Y] + fstp qword [S.Z] + fld qword [S.X] + fstp qword [S.Y] + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + call draw_registers + bts [flags],10 + btr [flags],6 + btr [flags],12 + btr [flags],3 + ret + +_40: + bt [flags],0 + jnc @f + inc [schk] + @@: sub eax,OPCODEtable + shr eax,2 + sub eax,0x40 + shl eax,3 + add eax,R.0 + fld qword [S.X] + fstp qword [eax] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + call draw_registers + bts [flags],10 + btr [flags],6 + btr [flags],11 + btr [flags],3 + ret + +_25: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X1] + fld qword [S.X] + fstp qword [S.X1] + fld qword [S.Y] + fstp qword [S.X] + fld qword [S.Z] + fstp qword [S.Y] + fld qword [S.T] + fstp qword [S.Z] + fstp qword [S.T] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_24: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + fld qword [S.Y] + call FpuXexpY + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_23: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + fld1 + fdivrp + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_22: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + fmul st,st + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_21: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + fsqrt + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + + +_20: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fstp qword [S.X1] + fld qword [S.Z] + fstp qword [S.T] + fld qword [S.Y] + fstp qword [S.Z] + fld qword [S.X] + fstp qword [S.Y] + fldpi + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_1E: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + call FpuTan + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + + +_1D: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + call FpuCos + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_1C: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + call FpuSin + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_1B: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + call FpuArctan + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_1A: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + call FpuArccos + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret +_19: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + call FpuArcsin + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + + +_18: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + fldln2 + fxch + fyl2x + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_17: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + fldlg2 + fxch + fyl2x + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + + +_16: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fst qword [S.X1] + call FpuEexpX + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_15: + bt [flags],0 + jnc @f + inc [schk] + @@: mov [perem],10 + fild [perem] + fld qword [S.X] + fst qword [S.X1] + call FpuXexpY + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_14: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.Y] + fld qword [S.X] + fst qword [S.Y] + fstp qword [S.X1] + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + ret +_13: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.Y] + fld qword [S.X] + fdivp + fld qword [S.X] + fstp qword [S.X1] + fstp qword [S.X] + fld qword [S.Z] + fstp qword [S.Y] + fld qword [S.T] + fstp qword [S.Z] +; fldz +; fstp qword [S.T] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + ret +_12: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.Y] + fld qword [S.X] + fmulp + fld qword [S.X] + fstp qword [S.X1] + fstp qword [S.X] + fld qword [S.Z] + fstp qword [S.Y] + fld qword [S.T] + fstp qword [S.Z] +; fldz +; fstp qword [S.T] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + ret +_11: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.Y] + fld qword [S.X] + fsubp + fld qword [S.X] + fstp qword [S.X1] + fstp qword [S.X] + fld qword [S.Z] + fstp qword [S.Y] + fld qword [S.T] + fstp qword [S.Z] +; fldz +; fstp qword [S.T] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + ret + +_10: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.X] + fld qword [S.Y] + faddp + fld qword [S.X] + fstp qword [S.X1] + fstp qword [S.X] + fld qword [S.Z] + fstp qword [S.Y] + fld qword [S.T] + fst qword [S.Z] +; fldz +; fstp qword [S.T] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + ret + +_0F: + bt [flags],0 + jnc @f + inc [schk] + @@: fld qword [S.Z] + fstp qword [S.T] + fld qword [S.Y] + fstp qword [S.Z] + fld qword [S.X] + fstp qword [S.Y] + fld qword [S.X1] + fstp qword [S.X] + call draw_stack + fld qword [S.X] + call ftos + call draw_string + bts [flags],10 + btr [flags],6 + btr [flags],3 + ret + +_0E: + bt [flags],0 + jnc @f + inc [schk] + @@: +; call stof +; fstp qword [S.X] + fld qword [S.Z] + fstp qword [S.T] + fld qword [S.Y] + fstp qword [S.Z] + fld qword [S.X] + fstp qword [S.Y] + call draw_string +; call stof +; fstp qword [S.X] + call draw_stack + bts [flags],10 + bts [flags],7 + btr [flags],6 + ret +_0D: + bt [flags],0 + jnc @f + inc [schk] + @@: bt [flags],3 + jc .F + fldz + fstp qword [S.X] + mov esi,string_zero + mov edi,string + mov ecx,13 + cld + @@: movsb + loop @b + mov [move1],0 + mov [move2],0 + mov [move1dot],0 + call draw_string + call stof + fstp qword [S.X] + call draw_stack + btr [flags],6 + btr [flags],10 + btr [flags],11 + btr [flags],4 + btr [flags],8 + btr [flags],9 + ret + .F: + btr [flags],3 + ret +_0C: + bt [flags],0 + jnc @f + inc [schk] + @@: btc [flags],6 + btr [flags],10 + call draw_string + call stof + fstp qword [S.X] + call draw_stack + cmp byte [string+12],0x20 + jne @f + mov word [string+11],0x3030 + @@: + cmp byte [string+1],"0" + je @f + ret + @@: cmp word [string+2]," " + je @f + cmp word [string+2],". " + je @f + ret + @@: mov dword [string]," 1 " + call draw_string + call stof + fstp qword [S.X] + call draw_stack + ret +_0B: + bt [flags],0 + jnc @f + inc [schk] + @@: jmp .0 + ; test [flags],(1 shl 7) + jz @f + call null.null + jmp .0 + @@: test [flags],(1 shl 10) + jz .0 + call null + .0:; fld qword [S.X] +; call ftos + bt [flags],6 + jc @f + cmp byte [string],'-' + jne .sign_1 + mov byte [string],' ' + call draw_string + call stof + fstp qword [S.X] + call draw_stack + ret + .sign_1: + mov byte [string],'-' + call draw_string + call stof + fstp qword [S.X] + call draw_stack + ret + @@: + cmp byte [string+10],'-' + jne .sign_2 + mov byte [string+10],' ' + call draw_string + call stof + fstp qword [S.X] + call draw_stack + ret + .sign_2: + mov byte [string+10],'-' + call draw_string + call stof + fstp qword [S.X] + call draw_stack + ret + +_0A: + bt [flags],0 + jnc @f + inc [schk] + @@: test [flags],(1 shl 7) + jz @f + call null.null + jmp .0 + @@: test [flags],(1 shl 10) + jz .0 + call null + .0: cmp [move1],8 + jge .nop + cmp [move1],0 + jne @f + mov [move1],1 + mov [move1dot],1 + mov word [string+1],'0.' + call draw_string + call stof + fstp qword [S.X] + call draw_stack + .nop: ret + @@: + cmp [move1dot],1 + je .nop + movzx esi,[move1] + mov byte [esi+string+1],'.' + mov [move1dot],1 + call draw_string + call stof + fstp qword [S.X] + call draw_stack + ret + +_00: + sub eax,OPCODEtable + shr eax,2 + add eax,0x30 + push eax + bt [flags],0 + jnc @f + inc [schk] + @@: test [flags],(1 shl 7) + jz @f + call null.null + jmp .0 + @@: test [flags],(1 shl 10) + jz .0 + call null + .0: pop ebx + test [flags],(1 shl 6) + jnz @f + cmp [move1],8 + jge .nop + movzx esi,[move1] + movzx edi,[move1dot] + add esi,edi + mov byte [esi+string+1],bl + inc [move1] + call draw_string + call stof + fstp qword [S.X] + call draw_stack + ret + @@: + cmp [move2],0 + jne @f + mov byte [string+12],bl + inc [move2] + call draw_string + call stof + fstp qword [S.X] + call draw_stack + ret + @@: + mov al, [string+12] + mov [string+11],al + mov byte [string+12],bl + call draw_string + call stof + fstp qword [S.X] + call draw_stack + .nop: ret + +null: fld qword [S.Z] + fstp qword [S.T] + fld qword [S.Y] + fstp qword [S.Z] + fld qword [S.X] + fstp qword [S.Y] +.null: call null_string + btr [flags],10 + btr [flags],7 +ret + + + + + +null_string: + mov esi,string_zero + mov edi,string + mov ecx,13 + cld + @@: movsb + loop @b + mov [move1],0 + mov [move2],0 + mov [move1dot],0 +ret + diff --git a/programs/emulator/PrMK/trunk/proc32.inc b/programs/emulator/PrMK/trunk/proc32.inc new file mode 100644 index 0000000000..23c56b03c1 --- /dev/null +++ b/programs/emulator/PrMK/trunk/proc32.inc @@ -0,0 +1,268 @@ + +; Macroinstructions for defining and calling procedures + +macro stdcall proc,[arg] ; directly call STDCALL procedure + { common + if ~ arg eq + reverse + pushd arg + common + end if + call proc } + +macro invoke proc,[arg] ; indirectly call STDCALL procedure + { common + if ~ arg eq + reverse + pushd arg + common + end if + call [proc] } + +macro ccall proc,[arg] ; directly call CDECL procedure + { common + size@ccall = 0 + if ~ arg eq + reverse + pushd arg + size@ccall = size@ccall+4 + common + end if + call proc + if size@ccall + add esp,size@ccall + end if } + +macro cinvoke proc,[arg] ; indirectly call CDECL procedure + { common + size@ccall = 0 + if ~ arg eq + reverse + pushd arg + size@ccall = size@ccall+4 + common + end if + call [proc] + if size@ccall + add esp,size@ccall + end if } + +macro proc [args] ; define procedure + { common + match name params, args> + \{ define@proc name, \{ prologue name,flag,parmbytes,localbytes,reglist \} + macro locals + \{ virtual at ebp-localbytes+current + macro label . \\{ deflocal@proc .,:, \\} + struc db [val] \\{ \common deflocal@proc .,db,val \\} + struc dw [val] \\{ \common deflocal@proc .,dw,val \\} + struc dp [val] \\{ \common deflocal@proc .,dp,val \\} + struc dd [val] \\{ \common deflocal@proc .,dd,val \\} + struc dt [val] \\{ \common deflocal@proc .,dt,val \\} + struc dq [val] \\{ \common deflocal@proc .,dq,val \\} + struc rb cnt \\{ deflocal@proc .,rb cnt, \\} + struc rw cnt \\{ deflocal@proc .,rw cnt, \\} + struc rp cnt \\{ deflocal@proc .,rp cnt, \\} + struc rd cnt \\{ deflocal@proc .,rd cnt, \\} + struc rt cnt \\{ deflocal@proc .,rt cnt, \\} + struc rq cnt \\{ deflocal@proc .,rq cnt, \\} \} + macro endl + \{ purge label + restruc db,dw,dp,dd,dt,dq + restruc rb,rw,rp,rd,rt,rq + restruc byte,word,dword,pword,tword,qword + current = $-(ebp-localbytes) + end virtual \} + macro ret operand + \{ match any, operand \\{ retn operand \\} + match , operand \\{ match epilogue:reglist, epilogue@proc: + \\\{ epilogue name,flag,parmbytes,localbytes,reglist \\\} \\} \} + macro finish@proc \{ localbytes = (((current-1) shr 2)+1) shl 2 + end if \} } + +macro defargs@proc [arg] + { common + if ~ arg eq + forward + local ..arg,current@arg + match argname:type, arg + \{ current@arg equ argname + label ..arg type + argname equ ..arg + if dqword eq type + dd ?,?,?,? + else if tbyte eq type + dd ?,?,? + else if qword eq type | pword eq type + dd ?,? + else + dd ? + end if \} + match =current@arg,current@arg + \{ current@arg equ arg + arg equ ..arg + ..arg dd ? \} + common + args@proc equ current@arg + forward + restore current@arg + common + end if } + +macro deflocal@proc name,def,[val] + { common + match vars, all@vars \{ all@vars equ all@vars, \} + all@vars equ all@vars name + forward + local ..var,..tmp + ..var def val + match =?, val \{ ..tmp equ \} + match any =dup (=?), val \{ ..tmp equ \} + match tmp : value, ..tmp : val + \{ tmp: end virtual + initlocal@proc ..var,def value + virtual at tmp\} + common + match first rest, ..var, \{ name equ first \} } + +macro initlocal@proc name,def + { virtual at name + def + size@initlocal = $ - name + end virtual + position@initlocal = 0 + while size@initlocal > position@initlocal + virtual at name + def + if size@initlocal - position@initlocal < 2 + current@initlocal = 1 + load byte@initlocal byte from name+position@initlocal + else if size@initlocal - position@initlocal < 4 + current@initlocal = 2 + load word@initlocal word from name+position@initlocal + else + current@initlocal = 4 + load dword@initlocal dword from name+position@initlocal + end if + end virtual + if current@initlocal = 1 + mov byte [name+position@initlocal],byte@initlocal + else if current@initlocal = 2 + mov word [name+position@initlocal],word@initlocal + else + mov dword [name+position@initlocal],dword@initlocal + end if + position@initlocal = position@initlocal + current@initlocal + end while } + +macro endp + { purge ret,locals,endl + finish@proc + purge finish@proc + restore regs@proc + match all,args@proc \{ restore all \} + restore args@proc + match all,all@vars \{ restore all \} } + +macro local [var] + { common + locals + forward done@local equ + match varname[count]:vartype, var + \{ match =BYTE, vartype \\{ varname rb count + restore done@local \\} + match =WORD, vartype \\{ varname rw count + restore done@local \\} + match =DWORD, vartype \\{ varname rd count + restore done@local \\} + match =PWORD, vartype \\{ varname rp count + restore done@local \\} + match =QWORD, vartype \\{ varname rq count + restore done@local \\} + match =TBYTE, vartype \\{ varname rt count + restore done@local \\} + match =DQWORD, vartype \\{ label varname dqword + rq count+count + restore done@local \\} + match , done@local \\{ virtual + varname vartype + end virtual + rb count*sizeof.\#vartype + restore done@local \\} \} + match :varname:vartype, done@local:var + \{ match =BYTE, vartype \\{ varname db ? + restore done@local \\} + match =WORD, vartype \\{ varname dw ? + restore done@local \\} + match =DWORD, vartype \\{ varname dd ? + restore done@local \\} + match =PWORD, vartype \\{ varname dp ? + restore done@local \\} + match =QWORD, vartype \\{ varname dq ? + restore done@local \\} + match =TBYTE, vartype \\{ varname dt ? + restore done@local \\} + match =DQWORD, vartype \\{ label varname dqword + dq ?,? + restore done@local \\} + match , done@local \\{ varname vartype + restore done@local \\} \} + match ,done@local + \{ var + restore done@local \} + common + endl } diff --git a/programs/emulator/PrMK/trunk/readme.txt b/programs/emulator/PrMK/trunk/readme.txt new file mode 100644 index 0000000000..b29ab479fa --- /dev/null +++ b/programs/emulator/PrMK/trunk/readme.txt @@ -0,0 +1,20 @@ +PrMK (Программируемый микрокалькулятор) - эмулятор МК БЗ-34. Copyright СССР. + + Поддерживаются основные ОПКОДы, режим программирования, в том числе ввод ОПКОДа с клавиатуры: + - набираем "0..f 0..F", текущее смещение инкриментируется, ОПКОД введён; + - набираем "sk", далее "0..f 0..F" - и мы переходим к набранному смещению в программе, заодно меняем значение Счётчика Команд. + Команды и смещения вводятся в шестнадцатиричном виде. + + Комбинация клавиш Ctrl+S откроет диалог экспорта программы, Ctrl+L - диалог импорта. + + Переключатель Р-ГР-Г представляет из себя три кнопки; Р - радианы (360 градусов=2pi рад), ГРД - грады (360 градусов=400 град), Г - градусы (1 ГРД = 0,9 Г = pi/200 Р). Тригонометрические функции высчитывают значения по этим трём параметрам (правда, cos 90 = 6,123^-17, что примерно = 0). + + При старте PrMK отлавливает содержимое командной строки, автоматичски загружая программу по переданному пути, т.е. можно проассоциировать файлы *.mkp с PrMK. Примеры такого файла находятся в архиве. + + После операции останова (50h) в PC-Speaker'e раздастся писк, естественно при включённом динамике. + + Файлы справки от автора программы "Калькулятор Б3-34" www.ua1zcl.fromru.com, а также mk.semico.ru и xakep.ru + + Программа не проходила жёсткого тестирования, поэтому ожидаются всевозможные огрехи. + +С уважением, staper@inbox.ru \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/smpl/1.MKP b/programs/emulator/PrMK/trunk/smpl/1.MKP new file mode 100644 index 0000000000..3f13ca44ff Binary files /dev/null and b/programs/emulator/PrMK/trunk/smpl/1.MKP differ diff --git a/programs/emulator/PrMK/trunk/smpl/1.mkp.asm b/programs/emulator/PrMK/trunk/smpl/1.mkp.asm new file mode 100644 index 0000000000..305fd8c6ad --- /dev/null +++ b/programs/emulator/PrMK/trunk/smpl/1.mkp.asm @@ -0,0 +1,34 @@ +;Файл программы для PrMK. Скомпилировать с помощью FASM. + +; Вычисляем площадь круга +;Ввод данных: +;1. Ввести радиус круга; +;2. Нажать [В/О] [С/П]; +;3. На индикаторе - площадь круга. + + +db "<СТЕК>" + + ;далее следуют значения регистров стека (только qword) + + ;R.X1 + dq 0.0 + ;R.X + dq 2.0 + ;R.Y + dq 0.0 + ;R.Z + dq 0.0 + ;R.T + dq 0.0 + +db "<РГСТ>" + + ;Регистры: (с R.0 по R.E) + + times 15 dq 0.0 + +db "<ПРГМ>" + ;Программа в ОПКОДах МК + +db 0x22,0x20,0x12,0x50,0x51,0x00 \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/smpl/2.MKP b/programs/emulator/PrMK/trunk/smpl/2.MKP new file mode 100644 index 0000000000..53886b97a5 Binary files /dev/null and b/programs/emulator/PrMK/trunk/smpl/2.MKP differ diff --git a/programs/emulator/PrMK/trunk/smpl/2.mkp.asm b/programs/emulator/PrMK/trunk/smpl/2.mkp.asm new file mode 100644 index 0000000000..598d9259b5 --- /dev/null +++ b/programs/emulator/PrMK/trunk/smpl/2.mkp.asm @@ -0,0 +1,46 @@ +;Файл программы для PrMK. Скомпилировать с помощью FASM. + +;Игра "крестики-нолики" +;Перепечатано с книги "Игры с микро ЭВМ" Я.К.Трохименко. Киев. "Технiка", 1986 + +;Установить переключатель Р-Г в положение Р, нажать клавиши В/О и С/П для высвечивания номера РX=9 центральной клетки, "занимаемой" микрокалькулятором; после каждого высвечивания номера клетки, "занимаемой" микрокалькулятором, вводить в регистр X номер клетки, "занимаемой" противником, и нажимать только клавишу С/П; при выигрыше микрокалькулятора высвечиваются цифры 77 (номер клетки, "занимаемой" последним ходом микрокалькулятора, хранится в регистре Y); при ничейном результате высвечивается нуль. + +;Номера клеток поля: + +; 1 | 2 | 3 +;----------------- +; 8 | 9 | 4 +;----------------- +; 7 | 6 | 5 + + +db "<СТЕК>" + + ;далее следуют значения регистров стека (только qword) + + ;R.X1 + dq 0.0 + ;R.X + dq 0.0 + ;R.Y + dq 0.0 + ;R.Z + dq 0.0 + ;R.T + dq 0.0 + +db "<РГСТ>" + + ;Регистры: (с R.0 по R.E) + + times 15 dq 0.0 + +db "<ПРГМ>" + ;Программа в ОПКОДах МК + +db 0x0E,0x09,0x50,0x53,0x19,0x20,0x12,0x1D,0x5C,0x11 +db 0x69,0x53,0x19,0x01,0x11,0x51,0x30,0x67,0x53,0x19 +db 0x67,0x53,0x19,0x00,0x50,0x01,0x11,0x5E,0x1E,0x08 +db 0x49,0x50,0x47,0x69,0x04,0x11,0x57,0x28,0x5C,0x2A +db 0x08,0x10,0x48,0x67,0x11,0x57,0x33,0x68,0x07,0x07 +db 0x50,0x69,0x52 \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/smpl/3.MKP b/programs/emulator/PrMK/trunk/smpl/3.MKP new file mode 100644 index 0000000000..2e8d6a9791 Binary files /dev/null and b/programs/emulator/PrMK/trunk/smpl/3.MKP differ diff --git a/programs/emulator/PrMK/trunk/smpl/3.mkp.asm b/programs/emulator/PrMK/trunk/smpl/3.mkp.asm new file mode 100644 index 0000000000..e0f1df6c3e --- /dev/null +++ b/programs/emulator/PrMK/trunk/smpl/3.mkp.asm @@ -0,0 +1,97 @@ +;Файл программы для PrMK. Скомпилировать с помощью FASM. + +;Игра "Посадка на Луну" +;Перепечатано с книги "5 вечеров с микрокалькулятором" И.Д.Данилов, Г.В.Славин. Москва. "Финансы и статистика", 1988 +;Andriy Slezenko, student@uninet.kiev.ua + +;1. Ввести программу. +;2. Перейти в режим вычислений. +;3. В/О С/П "0". +;4. h0 (начальная высота корабля) ПА v0 (начальная скорость) ПВ. +; m0 (исходная масса топлива) ПС g (ускорение свободного падения для планеты) П9. +;5. С/П "h" XY "v" ИПС "m" ИП4 "t" (текущие значения). +;6. S (расход топлива в следующую секунду). +;7. Перейти к п.5 и продолжать до посадки корабля. + +;Цель игры - посадить корабль на Луну. +; Ситуация у нас с вами такая такая. Ракета находится на расстоянии N метров от Луны, скорость ее V метров в секунду, запас топлива в баках - S тонн. Величины эти, конечно, известны командиру. Сопла ракеты повернуты к Луне и, добавляя топливо в двигатель, мы начинаем тормозить. Каждую секунду на световом табло в командирской рубке появляется информация о высоте корабля над поверхностью планеты, скорости его и запасе топлива. Так как командиром корабля будете вы, то знайте, что перед тем, как посмотреть на табло, нужно нажать такие клавиши: XY показывает скорость, ИПС дает остаток топлива в баке, ИП4 - время с начала торможения. Что касается высоты ракеты над планетой, то она будет загораться на вашем табло сразу при остановке калькулятора после проведения очередного маневра. +; Задача понятна - посадить корабль так, чтобы в момент посадки скорость его была близка к нулю, топлива при этом желательно израсходовать поменьше, да и провести посадку побыстрее - незачем долго мучить членов экипажа, ведь перегрузки при посадке не маленькие. Да, что касается топлива, дополнительное условие - если его останется меньше 95 тонн, то обратный старт на Землю станет невозможным. + +;Контрольный пример: +;Пусть высота будет 1000 метров, скорость - 150 м/с, запас топлива - 500 тонн. Да, еще нужно ввести в бортовой компьютер ускорение свободного падения на Луне - 1,62 м/с^2. Вводим эти числа соответственно в регистры РА, РВ, РС и Р9. +;Нажимаем В/О С/П и на индикаторе появилась начальная высота. Вводим в двигатель первую порцию топлива - 20 С/П. Через 10 секунд на индикаторе появилась высота, на которой теперь находился корабль, 856.4. Еще столько же топлива - 20 С/П и высота стала 719.4. Еще порция побольше - 25 С/П. Высота 591 метр. +;Проверим остальные параметры: скорость (клавиша XY) - 128,4 м/с, запас топлива (ИПС) - 435 тонн, время в пути (ИП4) - 3 с. +;После ввода два раза подряд по 30 тонн горючего, высота корабля снизилась до 366,9 м. +;После дальнейшего ввода два раза подряд по 35 тонн горючего, табло показало высоту - 194,1 м, скорость - 76,6, топливо - 305, время - 7. +;Далее полет протекал так: + +; Расход топлива Высота +; 40 130.5 +; 45 85.6 +; 40 57.4 +; 40 46.2 +; 10 38.1 +; 10 33.2 +; 0 26.6 +; 0 18.4 +; 5 10.9 +; 7 5.1 +; 8 1.6 +; 10 1.2 +; 5 1.5 +; (здесь скорость оказалась +; отрицательной (-0,3) и корабль +; начал снова удаляться от поверхности) +; 0 0.3 +; 3 3.1111111 +;Коснулись поверхности Луны. После посадки выяснилось (ИПС), что топлива осталось 82 тонны, а время, затраченное на этот процесс (ИП4), 21 секунда. +;В итоге мы видим, что сели тяжеловато, но корабль цел, с экипажем все в порядке. Вот только топлива перерасходовали, на обратный путь не хватит. Придется на Луне ждать корабль-спасатель и надеяться, что его капитан справится с посадкой лучше вас. +;Но не огорчайтесь. Для первого раза вполне прилично. + +;Примечания: +;1. Числа в кавычках - это числа, высвечиваемые на экране. +;2. Выполнять п.4 не обязательно. По умолчанию предполагается: h=1000 м, v0=150 м/с, m0+500 т, g=1,62 м/с^2 для Луны. +;3. Смысл сообщений о качестве посадки расшифрован ниже. + +;1,1111111 - идеальная посадка; +;2,1111111 - нормальная посадка; +;3,1111111 - тяжелая посадка; +;4,1111111 - посадка с легко устранимыми повреждениями; +;5,1111111 - повреждения, полученные при посадке, неустранимы. Обратный старт к Земле вряд ли возможен; +;6,1111111 - очень сильные повреждения; +;7,1111111 - разгерметизация отдельных блоков в результате сильного удара. Жизнь членов экипажа под угрозой; +;8,1111111 - гибель экипажа; +;9,1111111 - взрыв корабля. + + +db "<СТЕК>" + + ;далее следуют значения регистров стека (только qword) + + ;R.X1 + dq 0.0 + ;R.X + dq 0.0 + ;R.Y + dq 0.0 + ;R.Z + dq 0.0 + ;R.T + dq 0.0 + +db "<РГСТ>" + + ;Регистры: (с R.0 по R.E) + + times 15 dq 0.0 + +db "<ПРГМ>" + ;Программа в ОПКОДах МК + +db 0x0D,0x44,0x0C,0x03,0x4A,0x48,0x02,0x13,0x4C,0x01 +db 0x05,0x00,0x4B,0x01,0x0A,0x06,0x02,0x49,0x0D,0x50 +db 0x6B,0x6A,0x50,0x40,0xD4,0x14,0x6C,0x14,0x11,0x5C +db 36 ,0x0D,0x40,0x6C,0x51, 37 ,0x4C,0x68,0x13,0x02 +db 0x10,0x60,0x14,0x13,0x69,0x14,0x11,0x6B,0x10,0x4B +db 0x6A,0x14,0x11,0x4A,0x5C, 20 ,0x0B,0x6B,0x22,0x21 +db 0x10,0x01,0x10,0x4D,0xDD,0x6D,0x09,0x23,0x10,0x50 \ No newline at end of file diff --git a/programs/emulator/PrMK/trunk/struct.inc b/programs/emulator/PrMK/trunk/struct.inc new file mode 100644 index 0000000000..947a84e89a --- /dev/null +++ b/programs/emulator/PrMK/trunk/struct.inc @@ -0,0 +1,180 @@ + +; Macroinstructions for defining data structures + +macro struct name + { fields@struct equ name + match child parent, name \{ fields@struct equ child,fields@\#parent \} + sub@struct equ + struc db [val] \{ \common fields@struct equ fields@struct,.,db, \} + struc dw [val] \{ \common fields@struct equ fields@struct,.,dw, \} + struc du [val] \{ \common fields@struct equ fields@struct,.,du, \} + struc dd [val] \{ \common fields@struct equ fields@struct,.,dd, \} + struc dp [val] \{ \common fields@struct equ fields@struct,.,dp, \} + struc dq [val] \{ \common fields@struct equ fields@struct,.,dq, \} + struc dt [val] \{ \common fields@struct equ fields@struct,.,dt, \} + struc rb count \{ fields@struct equ fields@struct,.,db,count dup (?) \} + struc rw count \{ fields@struct equ fields@struct,.,dw,count dup (?) \} + struc rd count \{ fields@struct equ fields@struct,.,dd,count dup (?) \} + struc rp count \{ fields@struct equ fields@struct,.,dp,count dup (?) \} + struc rq count \{ fields@struct equ fields@struct,.,dq,count dup (?) \} + struc rt count \{ fields@struct equ fields@struct,.,dt,count dup (?) \} + macro db [val] \{ \common \local anonymous + fields@struct equ fields@struct,anonymous,db, \} + macro dw [val] \{ \common \local anonymous + fields@struct equ fields@struct,anonymous,dw, \} + macro du [val] \{ \common \local anonymous + fields@struct equ fields@struct,anonymous,du, \} + macro dd [val] \{ \common \local anonymous + fields@struct equ fields@struct,anonymous,dd, \} + macro dp [val] \{ \common \local anonymous + fields@struct equ fields@struct,anonymous,dp, \} + macro dq [val] \{ \common \local anonymous + fields@struct equ fields@struct,anonymous,dq, \} + macro dt [val] \{ \common \local anonymous + fields@struct equ fields@struct,anonymous,dt, \} + macro rb count \{ \local anonymous + fields@struct equ fields@struct,anonymous,db,count dup (?) \} + macro rw count \{ \local anonymous + fields@struct equ fields@struct,anonymous,dw,count dup (?) \} + macro rd count \{ \local anonymous + fields@struct equ fields@struct,anonymous,dd,count dup (?) \} + macro rp count \{ \local anonymous + fields@struct equ fields@struct,anonymous,dp,count dup (?) \} + macro rq count \{ \local anonymous + fields@struct equ fields@struct,anonymous,dq,count dup (?) \} + macro rt count \{ \local anonymous + fields@struct equ fields@struct,anonymous,dt,count dup (?) \} + macro union \{ fields@struct equ fields@struct,,union,< + sub@struct equ union \} + macro struct \{ fields@struct equ fields@struct,,substruct,< + sub@struct equ substruct \} + virtual at 0 } + +macro ends + { match , sub@struct \{ restruc db,dw,du,dd,dp,dq,dt + restruc rb,rw,rd,rp,rq,rt + purge db,dw,du,dd,dp,dq,dt + purge rb,rw,rd,rp,rq,rt + purge union,struct + match name=,fields,fields@struct \\{ fields@struct equ + make@struct name,fields + fields@\\#name equ fields \\} + end virtual \} + match any, sub@struct \{ fields@struct equ fields@struct> \} + restore sub@struct } + +macro make@struct name,[field,type,def] + { common + if $ + display 'Error: definition of ',`name,' contains illegal instructions.',0Dh,0Ah + err + end if + local define + define equ name + forward + local sub + match , field \{ make@substruct type,name,sub def + define equ define,.,sub, \} + match any, field \{ define equ define,.#field,type, \} + common + match fields, define \{ define@struct fields \} } + +macro define@struct name,[field,type,def] + { common + local list + list equ + forward + if ~ field eq . + name#field type def + sizeof.#name#field = $ - name#field + else + rb sizeof.#type + end if + local value + match any, list \{ list equ list, \} + list equ list + common + sizeof.#name = $ + restruc name + match values, list \{ + struc name value \\{ + match any, fields@struct \\\{ fields@struct equ fields@struct,.,name, \\\} + match , fields@struct \\\{ label . + forward + match , value \\\\{ field type def \\\\} + match any, value \\\\{ field type value + if ~ field eq . + rb sizeof.#name#field - ($-field) + end if \\\\} + common \\\} \\} \} } + +macro enable@substruct + { macro make@substruct substruct,parent,name,[field,type,def] + \{ \common + \local define + define equ parent,name + \forward + \local sub + match , field \\{ match any, type \\\{ enable@substruct + make@substruct type,name,sub def + purge make@substruct + define equ define,.,sub, \\\} \\} + match any, field \\{ define equ define,.\#field,type, \\} + \common + match fields, define \\{ define@\#substruct fields \\} \} } + +enable@substruct + +macro define@union parent,name,[field,type,def] + { common + virtual at 0 + forward + if ~ field eq . + virtual at 0 + parent#field type def + sizeof.#parent#field = $ - parent#field + end virtual + if sizeof.#parent#field > $ + rb sizeof.#parent#field - $ + end if + else if sizeof.#type > $ + rb sizeof.#type - $ + end if + common + sizeof.#name = $ + end virtual + struc name [value] \{ \common + label .\#name + last@union equ + forward + match any, last@union \\{ virtual at .\#name + field type def + end virtual \\} + match , last@union \\{ match , value \\\{ field type def \\\} + match any, value \\\{ field type value \\\} \\} + last@union equ field + common rb sizeof.#name - ($ - .\#name) \} } + +macro define@substruct parent,name,[field,type,def] + { common + virtual at 0 + forward + if ~ field eq . + parent#field type def + sizeof.#parent#field = $ - parent#field + else + rb sizeof.#type + end if + local value + common + sizeof.#name = $ + end virtual + struc name value \{ + label .\#name + forward + match , value \\{ field type def \\} + match any, value \\{ field type value + if ~ field eq . + rb sizeof.#parent#field - ($-field) + end if \\} + common \} } diff --git a/programs/games/klavisha/trunk/courses/BASEKURS.ASM b/programs/games/klavisha/trunk/courses/BASEKURS.ASM new file mode 100644 index 0000000000..a16d9b5cb0 --- /dev/null +++ b/programs/games/klavisha/trunk/courses/BASEKURS.ASM @@ -0,0 +1,566 @@ +; Типовой файл с заданиями для клавиатурного +; тренажёра KJ|ABuIIIA + +; МАКСИМАЛЬНО ДОПУСТИМЫЙ РАЗМЕР СТРОКИ +; БЕЗ СКРОЛЛИНГА - 38 СИМВОЛОВ! +; (при размере окна по умолчанию) + +; Настоятельно НЕ РЕКОМЕНДУЕТСЯ делать строки +; для набора длиннее 38 символов. + +; Строки отделяются одна от другой байтом 0x00 + +; Уроки отделяются один от другого байтом 0xFE, +; который ставится ВМЕСТО 0x00 в конце последней +; строки урока + +; Последним байтом файла ДОЛЖЕН быть байт 0xFF, +; который ставится ПОСЛЕ последнего 0xFE в конце +; последнего урока + +; Собранный файл (или же набранный вручную в +; HEX-редакторе) должен иметь расширение .KLA + + +; ---------------------------------------------- + +; Учебный курс + +; Составитель: Андрей Михайлович (Dron2004) + +; Урок 1 +db 'ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф', 0x00 +db 'ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф', 0x00 +db 'ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф', 0x0 +db 'ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф ф', 0x00 +db 'ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы', 0x00 +db 'ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы', 0x00 +db 'ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы', 0x00 +db 'ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы ы', 0x00 +db 'в в в в в в в в в в в в в в в в в', 0x00 +db 'в в в в в в в в в в в в в в в в в', 0x00 +db 'в в в в в в в в в в в в в в в в в', 0x00 +db 'в в в в в в в в в в в в в в в в в', 0x00 +db 'а а а а а а а а а а а а а а а а а', 0x00 +db 'а а а а а а а а а а а а а а а а а', 0x00 +db 'а а а а а а а а а а а а а а а а а', 0x00 +db 'а а а а а а а а а а а а а а а а а', 0x00 +db 'п п п п п п п п п п п п п п п п п', 0x00 +db 'п а п а п а п а п а п а п а п а п', 0x00 +db 'п п п п п п п п п п п п п п п п п', 0x00 +db 'п а п а п а п а п а п а п а п а п', 0x00 +db 'п п п п п п п п п п п п п п п п п', 0x00 +db 'п а п а п а п а п а п а п а п а п', 0x00 +db 'фыва фыва фыва фыва фыва фыва фыва', 0x00 +db 'фыва фыва фыва фыва фыва фыва фыва', 0x00 +db 'фыва фыва фыва фыва фыва фыва фыва', 0x00 +db 'фыва фыва фыва фыва фыва фыва фыва', 0x00 +db 'фыва фыва фыва фыва фыва фыва фыва', 0x00 +db 'фыва п фыва п фыва п фыва п фыва п', 0x00 +db 'фыва п фыва п фыва п фыва п фыва п', 0x00 +db 'фыва п фыва п фыва п фыва п фыва п', 0x00 +db 'фыва п фыва п фыва п фыва п фыва п', 0x00 +db 'авыф авыф авыф авыф авыф аывф авыф', 0x00 +db 'авыф авыф авыф авыф авыф аывф авыф', 0x00 +db 'п авыф п авыф п авыф п авыф п авыф', 0x00 +db 'п авыф п авыф п авыф п авыф п авыф', 0xFE + +; Урок 2 +db 'о о о о о о о о о о о о о о о о о',0x00 +db 'о о о о о о о о о о о о о о о о о',0x00 +db 'о о о о о о о о о о о о о о о о о',0x00 +db 'о о о о о о о о о о о о о о о о о',0x00 +db 'л л л л л л л л л л л л л л л л л',0x00 +db 'л л л л л л л л л л л л л л л л л',0x00 +db 'л л л л л л л л л л л л л л л л л',0x00 +db 'л л л л л л л л л л л л л л л л л',0x00 +db 'д д д д д д д д д д д д д д д д д',0x00 +db 'д д д д д д д д д д д д д д д д д',0x00 +db 'д д д д д д д д д д д д д д д д д',0x00 +db 'д д д д д д д д д д д д д д д д д',0x00 +db 'ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж',0x00 +db 'ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж',0x00 +db 'ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж',0x00 +db 'ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж ж',0x00 +db 'р р р р р р р р р р р р р р р р р',0x00 +db 'р р р р р р р р р р р р р р р р р',0x00 +db 'р р р р р р р р р р р р р р р р р',0x00 +db 'р р р р р р р р р р р р р р р р р',0x00 +db 'ор ор ор ор ор ор ор ор ор ор ор',0x00 +db 'ор ор ор ор ор ор ор ор ор ор ор',0x00 +db 'ор ор ор ор ор ор ор ор ор ор ор',0x00 +db 'ро ро ро ро ро ро ро ро ро ро ро',0x00 +db 'ро ро ро ро ро ро ро ро ро ро ро', 0x00 +db 'ро ро ро ро ро ро ро ро ро ро ро', 0x00 +db 'э э э э э э э э э э э э э э э э', 0x00 +db 'э э э э э э э э э э э э э э э э', 0x00 +db 'э э э э э э э э э э э э э э э э', 0x00 +db 'э э э э э э э э э э э э э э э э', 0x00 +db 'э э э э э э э э э э э э э э э э', 0x00 +db 'э э э э э э э э э э э э э э э э', 0x00 +db 'ор эж ор эж ор эж ор эж ор эж ор', 0x00 +db 'ор эж ор эж ор эж ор эж ор эж ор', 0x00 +db 'ор эж ор эж ор эж ор эж ор эж ор', 0x00 +db 'ор эж ор эж ор эж ор эж ор эж ор', 0x00 +db 'олдж олдж олдж олдж олдж олдж э', 0x00 +db 'олдж олдж олдж олдж олдж олдж э', 0x00 +db 'олдж олдж олдж олдж олдж олдж э', 0x00 +db 'олдж олдж олдж олдж олдж олдж э', 0x00 +db 'эр эр эр эр эр эр эр эр эр эр эр', 0x00 +db 'эр эр эр эр эр эр эр эр эр эр эр', 0x00 +db 'эр эр эр эр эр эр эр эр эр эр эр', 0x00 +db 'эр эр эр эр эр эр эр эр эр эр эр', 0xFE + +;Урок 3 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пропал олдж пропал ааа эээ',0x00 +db 'фыва пропал олдж пропал ааа эээ',0x00 +db 'фыва пропал олдж пропал ааа эээ',0x00 +db 'фыва пропал олдж пропал ааа эээ',0x00 +db 'фыва пропал олдж пропал ааа эээ',0x00 +db 'фыва пропал олдж пропал ааа эээ',0x00 +db 'про ор эдж ждло про ор эдж ждло',0x00 +db 'про ор эдж ждло про ор эдж ждло',0x00 +db 'про ор эдж ждло про ор эдж ждло',0x00 +db 'про ор эдж ждло про ор эдж ждло',0x00 +db 'про ор эдж ждло про ор эдж ждло',0x00 +db 'про ор эдж ждло про ор эдж ждло',0x00 +db 'про ор эдж ждло про ор эдж ждло',0x00 +db 'про ор эдж ждло про ор эдж ждло',0x00 +db 'про ор эдж ждло про ор эдж ждло',0x00 +db 'ф э ф э ф э ф э ф э ф э ф э ф э',0x00 +db 'ф э ф э ф э ф э ф э ф э ф э ф э',0x00 +db 'ф э ф э ф э ф э ф э ф э ф э ф э',0x00 +db 'ф э ф э ф э ф э ф э ф э ф э ф э',0x00 +db 'ф э ф э ф э ф э ф э ф э ф э ф э',0x00 +db 'ф э ф э ф э ф э ф э ф э ф э ф э',0x00 +db 'падал лорд пропал род фыва эпр',0x00 +db 'падал лорд пропал род фыва эпр',0x00 +db 'падал лорд пропал род фыва эпр',0x00 +db 'падал лорд пропал род фыва эпр',0x00 +db 'падал лорд пропал род фыва эпр',0x00 +db 'дол род дол род да да да проф',0x00 +db 'дол род дол род да да да проф',0x00 +db 'дол род дол род да да да проф',0x00 +db 'дол род дол род да да да проф',0x00 +db 'ап ор ап ор ап ор ро па ро па',0x00 +db 'ап ор ап ор ап ор ро па ро па',0x00 +db 'ап ор ап ор ап ор ро па ро па',0x00 +db 'ап ор ап ор ап ор ро па ро па',0x00 +db 'ап ор ап ор ап ор ро па ро па',0x00 +db 'ап ор ап ор ап ор ро па ро па',0x00 +db 'ап ор ап ор ап ор ро па ро па',0x00 +db 'жэ ыф жэ ыф жэ ыф жэ ыф жэ ыф',0x00 +db 'жэ ыф жэ ыф жэ ыф жэ ыф жэ ыф',0x00 +db 'жэ ыф жэ ыф жэ ыф жэ ыф жэ ыф',0x00 +db 'жэ ыф жэ ыф жэ ыф жэ ыф жэ ыф',0x00 +db 'жэ ыф жэ ыф жэ ыф жэ ыф жэ ыф',0x00 +db 'жэ ыф жэ ыф жэ ыф жэ ыф жэ ыф',0x00 +db 'жэ ыф жэ ыф жэ ыф жэ ыф жэ ыф',0x00 +db 'жэ ыф жэ ыф жэ ыф жэ ыф жэ ыф',0x00 +db 'эж фы эж фы эж фы эж фы эж фы',0x00 +db 'эж фы эж фы эж фы эж фы эж фы',0x00 +db 'эж фы эж фы эж фы эж фы эж фы',0x00 +db 'эж фы эж фы эж фы эж фы эж фы',0x00 +db 'эж фы эж фы эж фы эж фы эж фы',0x00 +db 'эж фы эж фы эж фы эж фы эж фы',0xFE + + +;Урок 4 +db 'я я я я я я я я я я я я я я я',0x00 +db 'я я я я я я я я я я я я я я я',0x00 +db 'я я я я я я я я я я я я я я я',0x00 +db 'я я я я я я я я я я я я я я я',0x00 +db 'я ф я ф я ф я ф я ф я ф я ф я',0x00 +db 'я ф я ф я ф я ф я ф я ф я ф я',0x00 +db 'я ф я ф я ф я ф я ф я ф я ф я',0x00 +db 'я ф я ф я ф я ф я ф я ф я ф я',0x00 +db 'я ф я ф я ф я ф я ф я ф я ф я',0x00 +db 'я ф я ф я ф я ф я ф я ф я ф я',0x00 +db 'ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч',0x00 +db 'ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч',0x00 +db 'ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч',0x00 +db 'ч ч ч ч ч ч ч ч ч ч ч ч ч ч ч',0x00 +db 'ч ы ч ы ч ы ч ы ч ы ч ы ч ы ч',0x00 +db 'ч ы ч ы ч ы ч ы ч ы ч ы ч ы ч',0x00 +db 'ч ы ч ы ч ы ч ы ч ы ч ы ч ы ч',0x00 +db 'ч ы ч ы ч ы ч ы ч ы ч ы ч ы ч',0x00 +db 'ч ы ч ы ч ы ч ы ч ы ч ы ч ы ч',0x00 +db 'ч ы ч ы ч ы ч ы ч ы ч ы ч ы ч',0x00 +db 'с с с с с с с с с с с с с с с',0x00 +db 'с с с с с с с с с с с с с с с',0x00 +db 'с с с с с с с с с с с с с с с',0x00 +db 'с с с с с с с с с с с с с с с',0x00 +db 'с в с в с в с в с в с в с в с',0x00 +db 'с в с в с в с в с в с в с в с',0x00 +db 'с в с в с в с в с в с в с в с',0x00 +db 'с в с в с в с в с в с в с в с',0x00 +db 'с в с в с в с в с в с в с в с',0x00 +db 'с в с в с в с в с в с в с в с',0x00 +db 'м м м м м м м м м м м м м м м',0x00 +db 'м м м м м м м м м м м м м м м',0x00 +db 'м м м м м м м м м м м м м м м',0x00 +db 'м м м м м м м м м м м м м м м',0x00 +db 'м а м а м а м а м а м а м а м',0x00 +db 'м а м а м а м а м а м а м а м',0x00 +db 'м а м а м а м а м а м а м а м',0x00 +db 'м а м а м а м а м а м а м а м',0x00 +db 'мама мама мама мама мама мама',0x00 +db 'мама мама мама мама мама мама',0x00 +db 'мама мама мама мама мама мама',0x00 +db 'мама мама мама мама мама мама',0x00 +db 'и и и и и и и и и и и и и и и',0x00 +db 'и и и и и и и и и и и и и и и',0x00 +db 'и и и и и и и и и и и и и и и',0x00 +db 'и и и и и и и и и и и и и и и',0x00 +db 'и п и п и п и п и п и п и п и',0x00 +db 'и п и п и п и п и п и п и п и',0x00 +db 'и п и п и п и п и п и п и п и',0x00 +db 'и п и п и п и п и п и п и п и',0x00 +db 'мапи мапи мапи мапи мапи мапи',0x00 +db 'мапи мапи мапи мапи мапи мапи',0x00 +db 'мапи мапи мапи мапи мапи мапи',0x00 +db 'мапи мапи мапи мапи мапи мапи',0x00 +db 'яма вам сам мап фыв чип пива',0x00 +db 'яма вам сам мап фыв чип пива',0x00 +db 'яма вам сам мап фыв чип пива',0x00 +db 'фывап ячсми фывап ячсми имсчя',0x00 +db 'фывап ячсми фывап ячсми имсчя',0x00 +db 'фывап ячсми фывап ячсми имсчя',0x00 +db 'фывап ячсми фывап ячсми имсчя',0x00 +db 'фывап ячсми фывап ячсми имсчя',0x00 +db 'фывап ячсми фывап ячсми имсчя',0xFE + +;Урок 5 +db 'т т т т т т т т т т т т т т т',0x00 +db 'т т т т т т т т т т т т т т т',0x00 +db 'т т т т т т т т т т т т т т т',0x00 +db 'т т т т т т т т т т т т т т т',0x00 +db 'т р т р т р т р т р т р т р т',0x00 +db 'т р т р т р т р т р т р т р т',0x00 +db 'т р т р т р т р т р т р т р т',0x00 +db 'т р т р т р т р т р т р т р т',0x00 +db 'т р т р т р т р т р т р т р т',0x00 +db 'т р т р т р т р т р т р т р т',0x00 +db 'ь ь ь ь ь ь ь ь ь ь ь ь ь ь ь',0x00 +db 'ь ь ь ь ь ь ь ь ь ь ь ь ь ь ь',0x00 +db 'ь ь ь ь ь ь ь ь ь ь ь ь ь ь ь',0x00 +db 'ь ь ь ь ь ь ь ь ь ь ь ь ь ь ь',0x00 +db 'ь о ь о ь о ь о ь о ь о ь о ь',0x00 +db 'ь о ь о ь о ь о ь о ь о ь о ь',0x00 +db 'ь о ь о ь о ь о ь о ь о ь о ь',0x00 +db 'ь о ь о ь о ь о ь о ь о ь о ь',0x00 +db 'ь о ь о ь о ь о ь о ь о ь о ь',0x00 +db 'ь о ь о ь о ь о ь о ь о ь о ь',0x00 +db 'б б б б б б б б б б б б б б б',0x00 +db 'б б б б б б б б б б б б б б б',0x00 +db 'б б б б б б б б б б б б б б б',0x00 +db 'б б б б б б б б б б б б б б б',0x00 +db 'б л б л б л б л б л б л б л б',0x00 +db 'б л б л б л б л б л б л б л б',0x00 +db 'б л б л б л б л б л б л б л б',0x00 +db 'б л б л б л б л б л б л б л б',0x00 +db 'б л б л б л б л б л б л б л б',0x00 +db 'б л б л б л б л б л б л б л б',0x00 +db 'ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю',0x00 +db 'ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю',0x00 +db 'ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю',0x00 +db 'ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю',0x00 +db 'ю д ю д ю д ю д ю д ю д ю д ю',0x00 +db 'ю д ю д ю д ю д ю д ю д ю д ю',0x00 +db 'ю д ю д ю д ю д ю д ю д ю д ю',0x00 +db 'ю д ю д ю д ю д ю д ю д ю д ю',0x00 +db 'ю д ю д ю д ю д ю д ю д ю д ю',0x00 +db 'ю д ю д ю д ю д ю д ю д ю д ю',0x00 +db 'люд люд люд люд люд люд люд люд',0x00 +db 'люд люд люд люд люд люд люд люд',0x00 +db 'люд люд люд люд люд люд люд люд',0x00 +db 'люд люд люд люд люд люд люд люд',0x00 +db 'элт элт элт элт элт элт элт элт',0x00 +db 'элт элт элт элт элт элт элт элт',0x00 +db 'элт элт элт элт элт элт элт элт',0x00 +db 'род дол люд бють бють бють дот',0x00 +db 'род дол люд бють бють бють дот',0x00 +db 'род дол люд бють бють бють дот',0x00 +db 'род дол люд бють бють бють дот',0xFE + +;Урок 6 +db 'мачта продал эдвард мир тюрьма',0x00 +db 'мачта продал эдвард мир тюрьма',0x00 +db 'мачта продал эдвард мир тюрьма',0x00 +db 'мачта продал эдвард мир тюрьма',0x00 +db 'я был дома продал сми спирт',0x00 +db 'я был дома продал сми спирт',0x00 +db 'я был дома продал сми спирт',0x00 +db 'я был дома продал сми спирт',0x00 +db 'там пиво вода да да да правда',0x00 +db 'там пиво вода да да да правда',0x00 +db 'там пиво вода да да да правда',0x00 +db 'там пиво вода да да да правда',0x00 +db 'варит вар и самовар чист аж э',0x00 +db 'варит вар и самовар чист аж э',0x00 +db 'варит вар и самовар чист аж э',0x00 +db 'варит вар и самовар чист аж э',0x00 +db 'фыва олджа бил и бил да побил',0x00 +db 'фыва олджа бил и бил да побил',0x00 +db 'фыва олджа бил и бил да побил',0x00 +db 'фыва олджа бил и бил да побил',0x00 +db 'я э ф ю я э ф ю я э ф ю я э ф',0x00 +db 'я э ф ю я э ф ю я э ф ю я э ф',0x00 +db 'я э ф ю я э ф ю я э ф ю я э ф',0x00 +db 'я э ф ю я э ф ю я э ф ю я э ф',0xFE + +;Урок 7 +db 'й й й й й й й й й й й й й й й',0x00 +db 'й й й й й й й й й й й й й й й',0x00 +db 'й й й й й й й й й й й й й й й',0x00 +db 'й й й й й й й й й й й й й й й',0x00 +db 'й ф й ф й ф й ф й ф й ф й ф й',0x00 +db 'й ф й ф й ф й ф й ф й ф й ф й',0x00 +db 'й ф й ф й ф й ф й ф й ф й ф й',0x00 +db 'й ф й ф й ф й ф й ф й ф й ф й',0x00 +db 'й ф я й ф я й ф я й ф я й ф я',0x00 +db 'й ф я й ф я й ф я й ф я й ф я',0x00 +db 'й ф я й ф я й ф я й ф я й ф я',0x00 +db 'й ф я й ф я й ф я й ф я й ф я',0x00 +db 'ц ц ц ц ц ц ц ц ц ц ц ц ц ц ц',0x00 +db 'ц ц ц ц ц ц ц ц ц ц ц ц ц ц ц',0x00 +db 'ц ц ц ц ц ц ц ц ц ц ц ц ц ц ц',0x00 +db 'ц ц ц ц ц ц ц ц ц ц ц ц ц ц ц',0x00 +db 'ц ы ц ы ц ы ц ы ц ы ц ы ц ы ц',0x00 +db 'ц ы ц ы ц ы ц ы ц ы ц ы ц ы ц',0x00 +db 'ц ы ц ы ц ы ц ы ц ы ц ы ц ы ц',0x00 +db 'ц ы ц ы ц ы ц ы ц ы ц ы ц ы ц',0x00 +db 'цыц цыц цыц цыц цыц цыц цыц',0x00 +db 'цыц цыц цыц цыц цыц цыц цыц',0x00 +db 'ц ы ч ц ы ч ц ы ч ц ы ч ц ы ч',0x00 +db 'ц ы ч ц ы ч ц ы ч ц ы ч ц ы ч',0x00 +db 'ц ы ч ц ы ч ц ы ч ц ы ч ц ы ч',0x00 +db 'ц ы ч ц ы ч ц ы ч ц ы ч ц ы ч',0x00 +db 'у у у у у у у у у у у у у у у',0x00 +db 'у у у у у у у у у у у у у у у',0x00 +db 'у у у у у у у у у у у у у у у',0x00 +db 'у у у у у у у у у у у у у у у',0x00 +db 'у в у в у в у в у в у в у в у',0x00 +db 'у в у в у в у в у в у в у в у',0x00 +db 'у в у в у в у в у в у в у в у',0x00 +db 'у в у в у в у в у в у в у в у',0x00 +db 'у в с у в с у в с у в с у в с',0x00 +db 'у в с у в с у в с у в с у в с',0x00 +db 'у в с у в с у в с у в с у в с',0x00 +db 'у в с у в с у в с у в с у в с',0x00 +db 'к к к к к к к к к к к к к к к',0x00 +db 'к к к к к к к к к к к к к к к',0x00 +db 'к к к к к к к к к к к к к к к',0x00 +db 'к к к к к к к к к к к к к к к',0x00 +db 'к а к а к а к а к а к а к а к',0x00 +db 'к а к а к а к а к а к а к а к',0x00 +db 'к а к а к а к а к а к а к а к',0x00 +db 'к а к а к а к а к а к а к а к',0x00 +db 'кака кака кака кака кака кака',0x00 +db 'кака кака кака кака кака кака',0x00 +db 'кака кака кака кака кака кака',0x00 +db 'кака кака кака кака кака кака',0x00 +db 'к а м к а м к а м к а м к а м',0x00 +db 'к а м к а м к а м к а м к а м',0x00 +db 'к а м к а м к а м к а м к а м',0x00 +db 'к а м к а м к а м к а м к а м',0x00 +db 'е е е е е е е е е е е е е е е',0x00 +db 'е е е е е е е е е е е е е е е',0x00 +db 'е е е е е е е е е е е е е е е',0x00 +db 'е е е е е е е е е е е е е е е',0x00 +db 'е п е п е п е п е п е п е п е',0x00 +db 'е п е п е п е п е п е п е п е',0x00 +db 'е п е п е п е п е п е п е п е',0x00 +db 'е п е п е п е п е п е п е п е',0x00 +db 'е п и е п и е п и е п и е п и',0x00 +db 'е п и е п и е п и е п и е п и',0x00 +db 'е п и е п и е п и е п и е п и',0x00 +db 'е п и е п и е п и е п и е п и',0x00 +db 'йцуке фывап ячсми йцуке ячсми',0x00 +db 'йцуке фывап ячсми йцуке ячсми',0x00 +db 'йцуке фывап ячсми йцуке ячсми',0x00 +db 'йцуке фывап ячсми йцуке ячсми',0x00 +db 'йцуке фывап ячсми йцуке ячсми',0x00 +db 'йцуке фывап ячсми йцуке ячсми',0x00 +db 'йцуке фывап ячсми йцуке ячсми',0x00 +db 'екуцй павыф имсчя екуцй имсчя',0x00 +db 'екуцй павыф имсчя екуцй имсчя',0x00 +db 'екуцй павыф имсчя екуцй имсчя',0x00 +db 'екуцй павыф имсчя екуцй имсчя',0x00 +db 'екуцй павыф имсчя екуцй имсчя',0x00 +db 'екуцй павыф имсчя екуцй имсчя',0x00 +db 'ё ё ё ё ё ё ё ё ё ё ё ё ё ё ё',0x00 +db 'ё ё ё ё ё ё ё ё ё ё ё ё ё ё ё',0x00 +db 'ё ё ё ё ё ё ё ё ё ё ё ё ё ё ё',0x00 +db 'ё ё ё ё ё ё ё ё ё ё ё ё ё ё ё',0x00 +db 'ё ё ё ё ё ё ё ё ё ё ё ё ё ё ё',0x00 +db 'ф ё ф ё ф ё ф ё ф ё ф ё ф ё ф',0x00 +db 'ф ё ф ё ф ё ф ё ф ё ф ё ф ё ф',0x00 +db 'ф ё ф ё ф ё ф ё ф ё ф ё ф ё ф',0x00 +db 'ф ё ф ё ф ё ф ё ф ё ф ё ф ё ф',0x00 +db 'ф ё ф ё ф ё ф ё ф ё ф ё ф ё ф',0xFE + + +;Урок 8 +db 'н н н н н н н н н н н н н н н',0x00 +db 'н н н н н н н н н н н н н н н',0x00 +db 'н н н н н н н н н н н н н н н',0x00 +db 'н н н н н н н н н н н н н н н',0x00 +db 'н р н р н р н р н р н р н р н',0x00 +db 'н р н р н р н р н р н р н р н',0x00 +db 'н р н р н р н р н р н р н р н',0x00 +db 'н р н р н р н р н р н р н р н',0x00 +db 'н р т н р т н р т н р т н р т',0x00 +db 'н р т н р т н р т н р т н р т',0x00 +db 'н р т н р т н р т н р т н р т',0x00 +db 'н р т н р т н р т н р т н р т',0x00 +db 'г г г г г г г г г г г г г г г',0x00 +db 'г г г г г г г г г г г г г г г',0x00 +db 'г г г г г г г г г г г г г г г',0x00 +db 'г г г г г г г г г г г г г г г',0x00 +db 'г о г о г о г о г о г о г о г',0x00 +db 'г о г о г о г о г о г о г о г',0x00 +db 'г о г о г о г о г о г о г о г',0x00 +db 'г о г о г о г о г о г о г о г',0x00 +db 'г о ь г о ь г о ь г о ь г о ь',0x00 +db 'г о ь г о ь г о ь г о ь г о ь',0x00 +db 'г о ь г о ь г о ь г о ь г о ь',0x00 +db 'г о ь г о ь г о ь г о ь г о ь',0x00 +db 'ш ш ш ш ш ш ш ш ш ш ш ш ш ш ш',0x00 +db 'ш ш ш ш ш ш ш ш ш ш ш ш ш ш ш',0x00 +db 'ш ш ш ш ш ш ш ш ш ш ш ш ш ш ш',0x00 +db 'ш ш ш ш ш ш ш ш ш ш ш ш ш ш ш',0x00 +db 'ш л ш л ш л ш л ш л ш л ш л ш',0x00 +db 'ш л ш л ш л ш л ш л ш л ш л ш',0x00 +db 'ш л ш л ш л ш л ш л ш л ш л ш',0x00 +db 'ш л ш л ш л ш л ш л ш л ш л ш',0x00 +db 'ш л б ш л б ш л б ш л б ш л б',0x00 +db 'ш л б ш л б ш л б ш л б ш л б',0x00 +db 'ш л б ш л б ш л б ш л б ш л б',0x00 +db 'ш л б ш л б ш л б ш л б ш л б',0x00 +db 'щ щ щ щ щ щ щ щ щ щ щ щ щ щ щ',0x00 +db 'щ щ щ щ щ щ щ щ щ щ щ щ щ щ щ',0x00 +db 'щ щ щ щ щ щ щ щ щ щ щ щ щ щ щ',0x00 +db 'щ щ щ щ щ щ щ щ щ щ щ щ щ щ щ',0x00 +db 'щ д щ д щ д щ д щ д щ д щ д щ',0x00 +db 'щ д щ д щ д щ д щ д щ д щ д щ',0x00 +db 'щ д щ д щ д щ д щ д щ д щ д щ',0x00 +db 'щ д щ д щ д щ д щ д щ д щ д щ',0x00 +db 'щ д ю щ д ю щ д ю щ д ю щ д ю',0x00 +db 'щ д ю щ д ю щ д ю щ д ю щ д ю',0x00 +db 'щ д ю щ д ю щ д ю щ д ю щ д ю',0x00 +db 'щ д ю щ д ю щ д ю щ д ю щ д ю',0x00 +db 'з з з з з з з з з з з з з з з',0x00 +db 'з з з з з з з з з з з з з з з',0x00 +db 'з з з з з з з з з з з з з з з',0x00 +db 'з з з з з з з з з з з з з з з',0x00 +db 'з ж з ж з ж з ж з ж з ж з ж з',0x00 +db 'з ж з ж з ж з ж з ж з ж з ж з',0x00 +db 'з ж з ж з ж з ж з ж з ж з ж з',0x00 +db 'з ж з ж з ж з ж з ж з ж з ж з',0x00 +db 'з ж з ж з ж з ж з ж з ж з ж з',0x00 +db 'з ж з ж з ж з ж з ж з ж з ж з',0x00 +db 'х х х х х х х х х х х х х х х',0x00 +db 'х х х х х х х х х х х х х х х',0x00 +db 'х х х х х х х х х х х х х х х',0x00 +db 'х х х х х х х х х х х х х х х',0x00 +db 'х х х х х х х х х х х х х х х',0x00 +db 'х з х з х з х з х з х з х з х',0x00 +db 'х з х з х з х з х з х з х з х',0x00 +db 'х з х з х з х з х з х з х з х',0x00 +db 'х з х з х з х з х з х з х з х',0x00 +db 'х з х з х з х з х з х з х з х',0x00 +db 'ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ',0x00 +db 'ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ',0x00 +db 'ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ',0x00 +db 'ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ',0x00 +db 'ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'з х ъ ъ х з з х ъ ъ х з з х ъ',0x00 +db 'нгшщзхъ ролджэ тьбю ъхзщшгн',0x00 +db 'нгшщзхъ ролджэ тьбю ъхзщшгн',0x00 +db 'нгшщзхъ ролджэ тьбю ъхзщшгн',0x00 +db 'нгшщзхъ ролджэ тьбю ъхзщшгн',0x00 +db 'нгшщзхъ ролджэ тьбю ъхзщшгн',0xFE + + + +; Урок 9 +db 'пример проверка набор текса', 0x00 +db 'знаем быстро печатать сложно', 0x00 +db 'но нужно тренироваться', 0x00 +db 'и тогда получится', 0x00 +db 'давайте печатать мизинцами', 0x00 +db 'ф э й з ф э й з ф э й з ф э й', 0x00 +db 'а теперь без пробелов', 0x00 +db 'фэйз фэйз фэйз фэйз фэйз фэйз', 0x00 +db 'фэйз фэйз фэйз фэйз фэйз фэйз', 0x00 +db 'фэйз фэйз фэйз фэйз фэйз фэйз', 0x00 +db 'фэйз фэйз фэйз фэйз фэйз фэйз', 0x00 +db 'всё это достаточно сложно', 0x00 +db 'давайте печатать другие слова', 0x00 +db 'яхта яхта съел эхо здорово ура', 0x00 +db 'яхта яхта съел эхо здорово ура', 0x00 +db 'яхта яхта съел эхо здорово ура', 0x00 +db 'яхта яхта съел эхо здорово ура', 0x00 +db 'яхта яхта съел эхо здорово ура', 0x00 +db 'яхта яхта съел эхо здорово ура', 0x00 +db 'жили были дед да баба и была', 0x00 +db 'у них курочка ряба и снесла', 0x00 +db 'яичко не простое а золотое', 0x00 +db 'вот и сказке конец', 0x00 +db 'а кто слушал молодец', 0xFE + +; Урок 10 + + +db 'колибри колибри колибри колибри', 0x00 +db 'колибри колибри колибри колибри', 0x00 +db 'колибри колибри колибри колибри', 0x00 +db 'колибри колибри колибри колибри', 0x00 +db 'колибри колибри колибри колибри', 0x00 +db 'операционная система колибри ос', 0x00 +db 'операционная система колибри ос', 0x00 +db 'операционная система колибри ос', 0x00 +db 'операционная система колибри ос', 0x00 +db 'операционная система колибри ос', 0x00 +db 'быстрая надёжная компактная ос', 0x00 +db 'быстрая надёжная компактная ос', 0x00 +db 'быстрая надёжная компактная ос', 0x00 +db 'быстрая надёжная компактная ос', 0x00 +db 'быстрая надёжная компактная ос', 0x00 +db 'ассемблер ассемблер ассемблер', 0x00 +db 'ассемблер ассемблер ассемблер', 0x00 +db 'ассемблер ассемблер ассемблер', 0x00 +db 'ассемблер ассемблер ассемблер', 0x00 +db 'ассемблер ассемблер ассемблер', 0x00 +db 'микропроцессор это сердце пк', 0x00 +db 'микропроцессор это сердце пк', 0x00 +db 'микропроцессор это сердце пк', 0x00 +db 'микропроцессор это сердце пк', 0x00 +db 'микропроцессор это сердце пк', 0x00 +db 'многие программы для колибри', 0x00 +db 'написаны на языке ассемблера', 0x00 +db 'например', 0x00 +db 'клавиатурный тренажёр клавиша', 0x00 +db 'клавиатурный тренажёр клавиша', 0x00 +db 'клавиатурный тренажёр клавиша', 0x00 +db 'клавиатурный тренажёр клавиша', 0x00 +db 'клавиатурный тренажёр клавиша', 0x00 +db 'спасибо вам за работу с', 0x00 +db 'программой клавиша', 0x00 +db 'а данный курс на этом завершён', 0xFE, 0xFF \ No newline at end of file diff --git a/programs/games/klavisha/trunk/courses/BASEKURS.KLA b/programs/games/klavisha/trunk/courses/BASEKURS.KLA new file mode 100644 index 0000000000..f497a98231 Binary files /dev/null and b/programs/games/klavisha/trunk/courses/BASEKURS.KLA differ diff --git a/programs/games/klavisha/trunk/courses/SAMPLE.ASM b/programs/games/klavisha/trunk/courses/SAMPLE.ASM new file mode 100644 index 0000000000..23423520fd --- /dev/null +++ b/programs/games/klavisha/trunk/courses/SAMPLE.ASM @@ -0,0 +1,65 @@ +; Пример файла с заданиями для клавиатурного +; тренажёра KJ|ABuIIIA + +; МАКСИМАЛЬНО ДОПУСТИМЫЙ РАЗМЕР СТРОКИ +; БЕЗ СКРОЛЛИНГА - 38 СИМВОЛОВ! +; (при размере окна по умолчанию) + +; Настоятельно НЕ РЕКОМЕНДУЕТСЯ делать строки +; для набора длиннее 38 символов. + +; Строки отделяются одна от другой байтом 0x00 + +; Уроки отделяются один от другого байтом 0xFE, +; который ставится ВМЕСТО 0x00 в конце последней +; строки урока + +; Последним байтом файла ДОЛЖЕН быть байт 0xFF, +; который ставится ПОСЛЕ последнего 0xFE в конце +; последнего урока + +; Собранный файл (или же набранный вручную в +; HEX-редакторе) должен иметь расширение .KLA + +; Вот пример исходного кода ПРАВИЛЬНО подготов- +; ленного KLA-файла: + +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0x00 +db 'фыва пр олдж э фыва пр олдж э',0xFE + +db 'ячсми тьбю ячсми тьбю ячсми тьбю', 0x00 +db 'ячсми тьбю ячсми тьбю ячсми тьбю', 0x00 +db 'ячсми тьбю ячсми тьбю ячсми тьбю', 0x00 +db 'ячсми тьбю ячсми тьбю ячсми тьбю', 0x00 +db 'ячсми тьбю ячсми тьбю ячсми тьбю', 0x00 +db 'ячсми тьбю ячсми тьбю ячсми тьбю', 0x00 +db 'ячсми тьбю ячсми тьбю ячсми тьбю', 0x00 +db 'ячсми тьбю ячсми тьбю ячсми тьбю', 0x00 +db 'ячсми тьбю ячсми тьбю ячсми тьбю', 0xFE + +db 'йцуке нгшщзхъ йцуке нгшщзхъ зхъ',0x00 +db 'йцуке нгшщзхъ йцуке нгшщзхъ зхъ',0x00 +db 'йцуке нгшщзхъ йцуке нгшщзхъ зхъ',0x00 +db 'йцуке нгшщзхъ йцуке нгшщзхъ зхъ',0x00 +db 'йцуке нгшщзхъ йцуке нгшщзхъ зхъ',0x00 +db 'йцуке нгшщзхъ йцуке нгшщзхъ зхъ',0x00 +db 'йцуке нгшщзхъ йцуке нгшщзхъ зхъ',0x00 +db 'йцуке нгшщзхъ йцуке нгшщзхъ зхъ',0x00 +db 'йцуке нгшщзхъ йцуке нгшщзхъ зхъ',0xFE + +db '12345678901234567890123456789012345678', 0x00 +db 'Пример упражнения.',0x00 +db 'Это упражнение номер 4.', 0x00 +db 'Это конец файла KLA.',0xFE, 0xFF + + + + + diff --git a/programs/games/klavisha/trunk/courses/SAMPLE.KLA b/programs/games/klavisha/trunk/courses/SAMPLE.KLA new file mode 100644 index 0000000000..954fc34c1d Binary files /dev/null and b/programs/games/klavisha/trunk/courses/SAMPLE.KLA differ diff --git a/programs/games/klavisha/trunk/klavisha.asm b/programs/games/klavisha/trunk/klavisha.asm new file mode 100644 index 0000000000..f1015ba749 --- /dev/null +++ b/programs/games/klavisha/trunk/klavisha.asm @@ -0,0 +1,2812 @@ +; -------------------------------------------------------- +; KJ|ABuIIIA 0.9 +; -------------------------------------------------------- +; Клавиатурный тренажёр для операционной системы Колибри. +; +; Разработчики: +; - Андрей Михайлович (Dron2004) +; +; Последние изменения в исходном коде: 24.07.2010 21:15 GMT+6 + + + use32 + org 0x0 + + ;Заголовок + db 'MENUET01' + dd 0x01 + dd START + dd I_END + dd 0x10000 + dd 0x10000 + dd params + dd 0x0 + +;Код программы +START: + + ; call get_screen_params + + mov eax, 0x0000001C + cmp eax, 0x0 + je start_with_internal_text ; Параметры не заданы + + ; Параметр задан! Пытаемся этим воспользоваться + ; Необходимо определить размер файла... Вперёд!!! + mov eax, 5 + mov [arg1], eax + xor eax, eax + mov [arg2], eax + mov [arg3], eax + mov [arg4], eax + mov eax, filedatastruct + mov [arg5], eax + mov eax, [0x0000001C] + mov [arg7], eax + + mov eax, 70; + mov ebx, filestruct + int 0x40 + + cmp eax, 0 + jne start_with_internal_text ;Ошибка + + mov eax, dword [size] + mov [filesize], eax ;теперь размер файла у нас в filesize + + ;Инициализируем кучу + + mov eax, 68 + mov ebx, 11 + int 0x40 + + cmp eax, 0x0 + je start_with_internal_text ;Ошибка + + ;Выделяем блок памяти под файл + mov eax, 68 + mov ebx, 12 + mov ecx, [filesize] + inc ecx ;Выделим дополнительно один байт для того, чтобы добавить 0xFF + ;защита от "битых" KLA-файлов + int 0x40 + + mov [datastart], eax ;В переменной ДатаСтарт теперь находится указатель + + add eax, [filesize] + mov bh, 0xFF + mov [eax], bh + + ;Собственно, считываем файл в память + mov eax, 0x00 + mov [arg1], eax ;Номер подфункции + mov [arg2], eax ;Смещение в файле + mov [arg3], eax ;Старший dword смещения + mov eax, [filesize] + mov [arg4], eax ;Размер файла + mov eax, [datastart] + mov [arg5], eax ;Указатель на данные + mov eax, par + mov [arg7], eax ;Указатель на ASCIIZ-строку + + mov eax, 70 + mov ebx, filestruct + int 0x40 + + cmp eax, 0x0 + jne start_with_internal_text ;Ошибка + + ;mov edx, [datastart] + jmp initialize_variables + +start_with_internal_text: + mov edx, string + mov [datastart], edx + ;mov edx, string ; Используем встроенный текст + +initialize_variables: + + + + + mov edx, [datastart] + mov [currentsymb], edx ; Начальная инициализация переменных + mov [startline], edx + mov [lastsymb], edx + mov [lessonstart], edx + + mov eax, 0x00000001 + mov [currentline], eax + call count_lines + call draw_window + + +;Основной цикл +event_wait: + mov eax, 10 + int 0x40 + + cmp eax, 1 ;Перерисовка окна нужна + je redraw + cmp eax, 2 ;Клавиша нажата + je key + cmp eax, 3 ;По кнопке жмахнули + je button + + jmp event_wait + +redraw: + call draw_window + jmp event_wait +key: + mov eax, 2 + int 0x40 ;Теперь код нажатой клавиши в ah + + push eax + + ;Запускаем счётчик времени для последующего + ; определения скорости набора + + mov eax, [currentsymb] + cmp eax, [lessonstart] + jne not_first_symbol + cmp [mistakes], 0x00 + jne not_first_symbol + + mov eax, 26 + mov ebx, 9 + int 0x40 + + mov [typestarttime], eax + +not_first_symbol: + + pop eax + + ;Проверяем, не закончился ли текст + mov esi, [currentsymb] + mov al, byte [esi] + cmp al, 0xFF + je text_end + cmp al, 0xFE + je text_end + + push ebx + mov ebx, [currentsymb] + mov al, byte [ebx] + pop ebx + + cmp al,0x00 + jne not_new_line + cmp ah, 0x0D + je correct_key_nl + cmp ah, 0x20 + je correct_key_nl + jmp not_this_key + +not_new_line: + cmp ah, al + jne not_this_key + jmp correct_key + +correct_key_nl: + mov eax, [currentsymb] + inc eax + mov [startline], eax + + mov eax, [currentsymb] + inc eax + mov [currentsymb], eax + mov [lastsymb], eax + + mov eax, [currentline] + inc eax + mov [currentline], eax + + mov eax, [symbtyped] ;Увеличим число введённых символов на 1 + inc eax + mov [symbtyped], eax + call count_speed + ;call draw_speed + + call draw_window + jmp event_wait + + +correct_key: + mov eax, [currentsymb] + inc eax + mov [currentsymb], eax + mov [lastsymb], eax + + mov eax, [symbtyped] ;Увеличим число введённых символов на 1 + inc eax + mov [symbtyped], eax + call count_speed + ;call draw_speed + + call redraw_2_symbols + jmp event_wait + +not_this_key: + + mov esi, [mistakes] + inc esi + mov [mistakes], esi + call redraw_mistakes + jmp event_wait + +text_end: + + ; /// Препятствует миганию окна по окончании урока + ; при нажатии клавиш + mov esi, [startline] + cmp esi, lessoncomplete + je text_end_already_shown + ; /////////////////////////// + + + call speed_to_string + + mov esi, lessoncomplete + mov [startline], esi + + mov esi, lessoncompleteend + dec esi + mov [currentsymb], esi + + call draw_window +text_end_already_shown: + jmp event_wait + +button: + mov eax, 17 + int 0x40 ;Идентификатор нажатой кнопки возвращён в ah + + cmp ah, 1 ;это кнопка закрытия + jne no_close + mov eax, -1 + int 0x40 +no_close: + ;Проверяем остальные кнопки + cmp ah, 0x02 + jne no_button_2 + ;Нажата кнопка 2 + ; ОЧЕНЬ СТРАШНЫЙ КОД + xor eax, eax + + mov [mistakes], 0x0 + + mov esi, [lastsymb] + mov al, [esi] + ;Нужно проверить, что за символ был последним. Если 0xFF - + ;Текст кончился, нужно начать всё сначала + cmp al, 0xFF + je start_1st_lesson + + cmp al, 0xFE ; Мы прошли прошлый урок? + jne not_completed_previous + +init_level_after_fe: + ;Ежели да, то проверим, не попал ли случайно следующим символом 0xFF + inc esi + mov al, [esi] + cmp al, 0xFF + je start_1st_lesson + ;Ежели нет - это и есть следующий урок + jmp set_lesson_start_from_esi + +not_completed_previous: + inc esi + mov al, [esi] + cmp al, 0xFF + je start_1st_lesson + cmp al, 0xFE + je init_level_after_fe + jmp not_completed_previous + +start_1st_lesson: + mov esi, [datastart] +set_lesson_start_from_esi: + mov [startline], esi + mov [currentsymb], esi + mov [lastsymb], esi + mov [lessonstart], esi + + ;CC + mov eax, 0x00000001 + mov [currentline], eax + call count_lines + ;CC + + call reset_speed_counters + + call draw_window + jmp event_wait + ; КОНЕЦ СТРАШНОГО КОДА + +no_button_2: + cmp ah, 0x03 + jne no_button_3 + + ;Перезапуск уровня + mov edx, [lessonstart] + mov [currentsymb], edx + mov [startline], edx + mov [lastsymb], edx + + mov eax, 0x00000001 + mov [currentline], eax + + mov [mistakes], 0 + + call reset_speed_counters + + call count_lines + call draw_window + + jmp event_wait + +no_button_3: + cmp ah, 0x04 + jne no_button_4 + + ;Перезапуск курса упражнений + + mov edx, [datastart] + + mov [lessonstart], edx + mov [currentsymb], edx + mov [startline], edx + mov [lastsymb], edx + + mov eax, 0x00000001 + mov [currentline], eax + + mov [mistakes], 0 + + + call reset_speed_counters + + call count_lines + call draw_window + + jmp event_wait + + +no_button_4: + ;И возвращаемся к ожиданию события + jmp event_wait + +;"Сердце" программы - функция рисования окна (всё остальное - туловище Ж-)) ) +draw_window: + mov eax, 12 ;Сообщаем системе о состоянии перерисовки окна + mov ebx, 1 ;Начало перерисовки + int 0x40 + + + mov ax, [areawidth] ;Это первый вызов draw_window? + cmp ax, 0x0 + jne dw_not_first_call + call get_screen_params ;Получаем параметры экрана - ширину и высоту + +dw_not_first_call: + xor eax, eax + mov ax, [windowx] + mov ecx, 65536 + mul ecx + add eax, 780 + mov ebx, eax ;в ebx - X и ширина + + ;mov ebx, 10*65536+780 + + xor eax, eax + mov ax, [windowy] + mov ecx, 65536 + mul ecx + add eax, 580 + mov ecx, eax ;в ecx - Y и высота + + + ;mov ecx, 10*65536+580 ;Y и высота + mov edx, 0x33CCCCCC ;[тип окна][цвет рабочей области] + mov edi, text + mov eax, 0 ;Определить и вывести окно + int 0x40 + + +;Нарисуем кнопку СЛЕДУЮЩИЙ УРОК и текст на ней + mov eax, 8 + mov ebx, 295*65536+145 + mov ecx, 8*65536+18 + mov edx, 0x00000002 + mov esi, 0x0099CC99 + int 0x40 + + mov eax, 4 + mov ebx,310*65536+14 + mov ecx, 0x80000000 + mov edx, buttontext + int 0x40 + +;Нарисуем кнопку ПОВТОРИТЬ УПРАЖНЕНИЕ + mov eax, 8 + mov ebx, 450*65536+145 + mov ecx, 8*65536+18 + mov edx, 0x00000003 + mov esi, 0x00CC9999 + int 0x40 + + mov eax, 4 + mov ebx,465*65536+14 + mov ecx, 0x80000000 + mov edx, retrybuttontext + int 0x40 + +;Нарисуем кнопку НАЧАТЬ КУРС ЗАНОВО + mov eax, 8 + mov ebx, 605*65536+145 + mov ecx, 8*65536+18 + mov edx, 0x00000004 + mov esi, 0x00DD7777 + int 0x40 + + mov eax, 4 + mov ebx, 626*65536+14 + mov ecx, 0x80000000 + mov edx, restartbuttontext + int 0x40 + +; Нарисуем логотип + mov eax, 65 + mov ebx, logo + mov ecx, 32*65536+12 + mov edx, 12*65536+12 + mov esi, 1 + mov edi, green_text + mov ebp, 0 + int 0x40 + +;Получим текущие параметры окна + mov eax, 9 + mov ebx, kbbuffer + mov ecx, -1 + int 0x40 + + add ebx, 0x2A + mov eax, [ebx] + mov [windowwidth], eax + + mov ebx, kbbuffer + add ebx, 0x2E + mov eax, [ebx] + mov [windowheight], eax + +draw_error_count: + ; Нарисуем надпись "ОШИБОК" + mov eax, 4 + mov ebx, 60*65536+15 + mov ecx, 0x80AA0000 + mov edx, mistakestext + int 0x40 + + ; Выведем число ошибок + mov eax, 47 + mov ebx, 10000000000001000000000000000000b + mov ecx, [mistakes] + mov edx, 105*65536+15 + mov esi, 0x00AA0000 + int 0x40 + +draw_line_number: + ; Нарисуем надпись "Строка из" + mov eax, 4 + mov ebx, 140*65536+15 + mov ecx, 0x8000AA00 + mov edx, lineistext + int 0x40 + + ;Выведем номер текущей строки + mov eax, 47 + mov ebx, 10000000000001000000000000000000b + mov ecx, [currentline] + mov edx, 195*65536+15 + mov esi, 0x0000AA00 + int 0x40 + + ;Выведем текущую строку + mov eax, 47 + mov ebx, 10000000000001000000000000000000b + mov ecx, [linecount] + mov edx, 252*65536+15 + mov esi, 0x0000AA00 + int 0x40 + + + +draw_text_prepare: + ;Подготовка к выводу текста + mov edx, 40 ;Начальное положение выводимого текста по вертикали + + mov esi, [startline] + dec esi ;Так надо (см. *1 ниже)! + mov ebx, esi ;Теперь в edx - начало выводимой строки + + +draw_text: + + + ;Наращиваем указатель на текущий символ на единицу + inc ebx ;(*1) + +draw_text_without_inc: + ;Посмотрим, не выходит ли текст за границу окна + mov esi, [windowheight] ;Теперь в esi размер окна + mov eax, edx + and eax,0x0000FFFF + add eax, 64 + cmp eax, esi + ja end_draw_text ;Мы выходим за пределы окна. Перестаём рисовать. + + ;установим положение по горизонтали (+18 к текущей позиции) + mov esi, 18*65536 + + add edx, esi + + ; посмотрим, не вышел ли текст за границу по горизонтали + ; если вышел - не рисуем этот кусок + mov esi, [windowwidth] ;Теперь в esi размер окна + shl esi, 16 + mov eax, edx + and eax,0xFFFF0000 + add eax, 40*65536 + cmp eax, esi + jna horizontal_check_ok ;Если eax>est, то мы выходим за пределы окна. + +skip_line_end_step: + + mov ah, byte [ebx] + + cmp ah, 0x00 + je end_line_to_next_line + cmp ah, 0xFE + je end_draw_text + cmp ah, 0xFF + je end_draw_text + + inc ebx + + jmp skip_line_end_step + +end_line_to_next_line: + ;jmp end_line_to_next_line + and edx, 0x0000FFFF + jmp draw_text_without_inc + +horizontal_check_ok: + + ;Проверим, не закончился ли урок + mov esi, [startline] + cmp esi, lessoncomplete + jne in_process + + ;Если закончился, текст выводить нужно ЗЕЛЕНЫМ ЦВЕТОМ + mov edi, green_text + jmp color_set_sucessful + +in_process: + cmp ebx, [currentsymb] ; Рисуется текущий набираемый символ? + je red ; Так точно! + + ja black ; Нет, Рисуется то, что мы ещё не набрали + + + mov edi, gray_text ; Нет, рисуется то, что мы уже набрали + jmp color_set_sucessful + +red: + mov edi, red_text + jmp color_set_sucessful + +black: + mov edi, black_text ;Шрифт и цвет + +color_set_sucessful: + xor esi,esi + movzx si, byte [ebx] + cmp si, 0x0000 + jne continue_drawing + call increase_y; + jmp continue_text_proc + +continue_drawing: + + cmp si, 0x00FF + je end_draw_text + cmp si, 0x00FE + je end_draw_text + + + ;Рисуем букву с помощью БОЛЬШОГО шрифта + push ebx + push edx + + movzx eax, byte [ebx] + mov ecx, 64 + mul ecx + add eax, big_font + mov ebx, eax + + pop edx + + mov ecx, 16*65536+32 + + ; В edx лежит координата + + mov esi, 1 + + ; В edi лежит указатель на палитру (цвет шрифта) + + mov ebp, 0 + + mov eax, 65 + + int 0x40 + + pop ebx + ;На этом отрисовка буквы завершена +continue_text_proc: + ;inc edi + jmp draw_text + +end_draw_text: + + mov eax, 12 ;Вновь сообщаем о состоянии перерисовки она + mov ebx, 2 ;, но на этот раз - о конце перерисовки + int 0x40 + + ret + +increase_y: + ; Увеличим вертикальную координату вывода букв, + ; если кончилась строка (встретился байт 0x00) + and edx,0x0000FFFF + add edx, 33 + + ret + +;ПРОЦЕДУРА ПЕРЕРИСОВКИ ДВУХ СИМВОЛОВ (ДАБЫ МИНИМИЗИРОВАТЬ МИГАНИЕ) +redraw_2_symbols: + + ;Проверим, не выйдем ли мы при рисованаии за границу допустимой + ;области внутри окна. Если выйдем - скроллим строку по горизонтали + mov esi, [windowwidth] ;Теперь в esi размер окна + + mov eax, [currentsymb] + sub eax, [startline] + + mov ecx, 18 + + mul ecx + + add eax, 20 + + add eax, 20 + + add eax, 40 + + cmp eax, esi + jna r2s_horizontal_check_ok ;Если eax>est, то мы выходим за пределы окна. + + ;Итак, мы выходим за границы окна... Это плохо... + ;Строку придётся скроллить... + + mov eax, [currentsymb] + dec eax + mov [startline], eax + call draw_window + jmp return_from_redraw_2_symbols + +r2s_horizontal_check_ok: + + ;Рисуем ПРЕДЫДУЩУЮ СЕРУЮ букву с помощью БОЛЬШОГО шрифта + + mov ebx, [currentsymb] + dec ebx + + movzx eax, byte [ebx] + mov ecx, 64 + + mul ecx + + add eax, big_font + + mov ebx, eax + + + mov ecx, 16*65536+32 + + mov eax, [currentsymb] + sub eax, [startline] + dec eax + mov esi, 18 + mul esi + add eax, 18 + mov esi, 65536 + mul esi + add eax, 40 + + mov edx, eax + + + mov esi, 1 + + mov edi, gray_text + + mov ebp, 0 + + mov eax, 65 + + int 0x40 + + + ;Рисуем ТЕКУЩУЮ БУКВУ + + + mov ebx, [currentsymb] + + movzx eax, byte [ebx] + mov ecx, 64 + mul ecx + add eax, big_font + + mov ebx, eax + + mov ecx, 16*65536+32 + + mov eax, [currentsymb] + sub eax, [startline] + mov esi, 18 + mul esi + add eax, 18 + mov esi, 65536 + mul esi + add eax, 40 + + mov edx, eax + + mov esi, 1 + + mov edi, red_text + + mov eax, 65 + + int 0x40 + + +return_from_redraw_2_symbols: + + ret + +redraw_mistakes: + ;Закрасим прямоугольник + mov eax, 13 + mov ebx, 59*65536+75 + mov ecx, 14*65536+10 + mov edx, 0x00CCCCCC + int 0x40 + + ; Нарисуем надпись "ОШИБОК" + mov eax, 4 + mov ebx, 60*65536+15 + mov ecx, 0x80AA0000 + mov edx, mistakestext + int 0x40 + + ; Выведем число ошибок + mov eax, 47 + mov ebx, 10000000000001000000000000000000b + mov ecx, [mistakes] + mov edx, 105*65536+15 + mov esi, 0x00AA0000 + int 0x40 + + ret + +count_lines: + xor ecx, ecx ; В ecx - счётчик строк + inc ecx ; У нас 1 строка + + + ; Начинаем разбор... + mov eax, [startline] + dec eax + +cl_next_step: + inc eax + mov bh, [eax] + + cmp bh, 0x00 + jne cl_not_new_line + inc ecx + jmp cl_next_step + +cl_not_new_line: + cmp bh, 0xFE + je cl_end + cmp bh, 0xFF + je cl_end + jmp cl_next_step + +cl_end: + mov [linecount], ecx + ret + +reset_speed_counters: + mov eax, 0x00000000 + + mov [symbtyped], eax + mov [typestarttime], eax + mov [currenttime], eax + mov [typingspeed], eax + + ret + +count_speed: + mov eax, 26 + mov ebx, 9 + int 0x40 + + mov [currenttime], eax + + mov ebx, [typestarttime] + + sub eax, ebx ;Теперь в eax - число прошедших долей секунд + + + mov ecx, [symbtyped] + cmp ecx, 0x00 + jne cs_all_ok + inc ecx + +cs_all_ok: + xor edx, edx; + + div ecx ;Теперь в eax - средняя пауза между символами + + mov ecx, eax + cmp ecx, 0x00 + jne cs_all_ok_2 + inc ecx + +cs_all_ok_2: + + xor edx, edx + mov eax, 6000 + + div ecx + + mov [typingspeed], eax ;Вот и всё. В [typingspeed] - средняя скорость набора + + + ret + +speed_to_string: + ; Преобразует число в строку и записывает по адрему переменной speedbytes задом наперёд + xor edx, edx + mov eax, [typingspeed] + + mov ecx, 10 + + div ecx + + add dl, 30h + mov [speedbytes + 3], dl + + xor edx, edx + div ecx + add dl, 30h + mov [speedbytes + 2], dl + + xor edx, edx + div ecx + add dl, 30h + mov [speedbytes + 1], dl + + xor edx, edx + div ecx + + cmp dl, 0x00 + je sts_move_space + + add dl, 30h + mov [speedbytes], dl + jmp sts_end + sts_move_space: + mov [speedbytes], 0x20 + + sts_end: + + ret + +get_screen_params: + + mov eax, 14 + int 0x40 + mov [areaheight], ax + + push ax + + shr eax, 16 + mov [areawidth],ax + + ;В ax по прежнему находится ширина окна. Воспользуемся этим + sub ax, 780 ;Вычтем начальный размер окна + shr ax, 1 + + mov [windowx], ax + + + ; Переходим к высоте + xor ax, ax + pop ax ; Вытолкнем из стека значение высоты + + sub ax, 580 + shr ax, 1 + mov [windowy], ax + + + ret + + + + +;draw_speed: + + ;Закрасим прямоугольник +; mov eax, 13 +; mov ebx, 59*65536+340 +; mov ecx, 29*65536+10 +; mov edx, 0x00CCCCCC +; int 0x40 + + ; Нарисуем надпись "Скорость набора (знаков в минуту):" +; mov eax, 4 +; mov ebx, 60*65536+30 +; mov ecx, 0x80008800 +; mov edx, speedtext +; int 0x40 + + ; Выведем число +; mov eax, 47 +; mov ebx, 10000000000001000000000000000000b +; mov ecx, [typingspeed] +; mov edx, 305*65536+30 +; mov esi, 0x00008800 +; int 0x40 + +; ret + +;Ресурсы ) +datastart dd 0x0 ; Адрес в памяти, по которому находятся данные для набора +currentsymb dd 0x0 ; Текущий символ +startline dd 0x0 ; Начало первой видимой строки +lessonstart dd 0x0 +lastsymb dd 0x0 ; Символ в памяти, набранный последним +mistakes dd 0x0 ; Количество ошибок + +areawidth dw 0x0 +areaheight dw 0x0 +windowx dw 0x0 +windowy dw 0x0 + +linecount dd 0x00 +currentline dd 0x00 + +symbtyped dd 0x0 +typestarttime dd 0x0 +currenttime dd 0x0 +typingspeed dd 0x0 + +windowwidth dd 0x00 +windowheight dd 0x00 + +text db 'Клавиатурный тренажёр -КJ|AВu|||A- 0.9',0 +buttontext db 'Следующее упражнение', 0 +retrybuttontext db 'Повторить упражнение', 0 +restartbuttontext db 'Начать курс заново', 0 + +speedtext db 'Скорость набора (знаков в минуту):',0 +mistakestext db 'ОШИБОК:', 0 +lessoncomplete db 'Упражнение завершено!',0x00 +db 'Средняя скорость набора: ' +speedbytes db 0x30,0x30,0x30,0x30 +db ' зн./мин.', 0xFE, 0xFF +lessoncompleteend: + +lineistext db 'СТРОКА ИЗ', 0 + +kbbuffer db 1024 DUP (0x00) +filestruct: ;Структура данных для вызова функции 70 +arg1 dd 0x0 +arg2 dd 0x0 +arg3 dd 0x0 +arg4 dd 0x0 +arg5 dd 0x0 +arg6 db 0x0 +arg7 dd 0x0 + +filedatastruct: ;Атрибуты и данные файла +attrib dd 0x0 +fntype db 0x0 +db 0x0 +db 0x0 +db 0x0 +dd 0x0 ;+8 +dd 0x0 ;+12 +dd 0x0 ;+16 +dd 0x0 ;+20 +dd 0x0 ;+24 +dd 0x0 ;+28 +size dq 0x0 ;+32 +;size2 dd 0x0 ;+36 + +filesize dd 0x0 + +par: +params rb 1024 + +string db 0x07,' КЛАВИАТУРНЫЙ ____________ для ОС ',0x07, 0x00 + db 0x07,' ТРЕНАЖЕР I KJ|ABuIIIA I ', 0x07, 0x00 + db 0x07,' ВЕРСИЯ 0.9 I____________I КОЛИБРИ ', 0x07, 0x00 + db 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 + db 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 + db 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 + db 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x00 + + db 0x07, 0x07, 0x07, ' написано на чистом ассемблере ',0x07, 0x07, 0x07, 0x0 + db ' ',0x0 + db 'Разработчики:', 0x00 + db '- Андрей Михайлович [Dron2004] ', 0x00 + db ' ',0x0 + + db ' Программа была запущена без пара-', 0x00 + db 'метров. Для полноценной работы с про-', 0x00 + db 'граммой необходим файл в формате .KLA,', 0x00 + db 'содержащий учебные задания для набора.', 0x00 + db ' ', 0x00 + db '(щелкните на кнопке СЛЕДУЮЩЕЕ УПРАЖНЕНИЕ)', 0xFE + + db 0x07,' KLA-файл содержит строки для набора,', 0x00 + db 'разделённые нулевым символом (0x00).', 0x00 + db 'Уроки отделяются один от другого байтом', 0x00 + db '0xFE (ставится в конце последней', 0x00 + db 'строки урока вместо 0x00). Файл должен', 0x00 + db 'заканчиваться байтом 0xFF (ставится', 0x00 + db 'в конце последней строки последнего', 0x00 + db 'урока после 0xFE).', 0x00 + db ' Имя KLA-файла передается программе', 0x00 + db 'при запуске в качестве параметра', 0x00 + db 'командной строки, например:', 0x00 + db ' ', 0x00 + db 'klavisha /rd/1/lessons.kla', 0x00 + db ' ', 0x00 + db '(щелкните на кнопке СЛЕДУЮЩЕЕ УПРАЖНЕНИЕ)', 0xFE + db 0x07,' Ваша задача - набрать предложенный', 0x00 + db 'текст с минимальным количеством ошибок.', 0x00 + db 'Переход с одного упражнения на другое', 0x00 + db 'осуществляется с помощью кнопки', 0x00 + db 'СЛЕДУЮЩЕЕ УПРАЖНЕНИЕ.', 0x00 + db 'А теперь можете попробовать поработать', 0x00 + db 'с набором. Щелкните на кнопке СЛЕДУЮЩЕЕ', 0x00 + db 'УПРАЖНЕНИЕ и начинайте набирать текст!,', 0x00 + db ' Но помните: это только демонстрация!', 0x00 + db 'Для обучения быстрому набору необходим', 0x00 + db 'соответствующий KLA-файл!', 0x00 + db ' ', 0x00 + db ' ', 0x00 + db '(щелкните на кнопке СЛЕДУЮЩЕЕ УПРАЖНЕНИЕ)', 0xFE + db 'фыва пр олдж фыва пр олдж фыва пр олдж', 0x00 + db 'фыва пр олдж фыва пр олдж фыва пр олдж', 0x00 + db 'фыва пр олдж фыва пр олдж фыва пр олдж', 0x00 + db 'э ж э ж э ж э ж э ж э ж э ж э ж э ж э', 0x00 + db 'э ж э ж э ж э ж э ж э ж э ж э ж э ж э', 0x00 + db 'фыва вава пара ора лорд вода эээ ров', 0x00 + db 'фыва вава пара ора лорд вода эээ ров', 0x00 + db 'фыва вава пара ора лорд вода эээ ров', 0x00 + db 'вал лов вова пора пар жд элло дол род', 0x00 + db 'вал лов вова пора пар жд элло дол род', 0x00 + db 'вал лов вова пора пар жд элло дол род', 0x00 + db 'выл ор жара дар жэ эж фы ыф ва ло да',0x00 + db 'выл ор жара дар жэ эж фы ыф ва ло да',0x00 + db 'выл ор жара дар жэ эж фы ыф ва ло да',0xFE + db 'ячсми тьбю ячсми тьбю ячсми тьбю яч бю', 0x00 + db 'ячсми тьбю ячсми тьбю ячсми тьбю яч бю', 0x00 + db 'форма жора жара митя бюро тюрьма яма', 0x00 + db 'мама мама мама мама мама мама мама',0x00 + db 'папа папа папа папа папа папа папа',0x00 + db 'сила сом мост томь ром мир правда чары', 0x00 + db 'миф вар дом строить стоит ломать дичь', 0x00 + db 'солома март тяжба явь ломать строить', 0xFE + db 'йцуке нгшщзхъ йцуке нгшщзхъ', 0x00 + db 'йцуке нгшщзхъ йцуке нгшщзхъ', 0x00 + db 'город кемерово стоит на реке томь', 0x00 + db 'но называется не томск потому что', 0x00 + db 'томск это другой город сибири', 0x00 + db 'наконец можно использовать клавиши', 0x00 + db 'всех рядов клавиатуры', 0xFE + db 'колибри - это компактная много-', 0x00 + db 'задачная операционная система,', 0x00 + db 'написанная на чистом ассемблере.', 0x00 + db 'система необычайно быстра и компактна.', 0x00 + db 'слава колибри! ура!', 0x00 + db 'тренировка набора подошла к концу', 0xFE, 0xFF + +stringend: + +big_font: +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 63, 252, 63, 252, 192, 3, 192, 3 +db 204, 51, 204, 51, 192, 3, 192, 3, 192, 3 +db 192, 3, 207, 243, 207, 243, 195, 195, 195, 195 +db 192, 3, 192, 3, 192, 3, 192, 3, 63, 252 +db 63, 252, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 63, 252, 63, 252 +db 255, 255, 255, 255, 243, 207, 243, 207, 255, 255 +db 255, 255, 255, 255, 255, 255, 240, 15, 240, 15 +db 252, 63, 252, 63, 255, 255, 255, 255, 255, 255 +db 255, 255, 63, 252, 63, 252, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 60, 240 +db 60, 240, 255, 252, 255, 252, 255, 252, 255, 252 +db 255, 252, 255, 252, 255, 252, 255, 252, 63, 240 +db 63, 240, 15, 192, 15, 192, 3, 0, 3, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 0, 3, 0, 15, 192, 15, 192 +db 63, 240, 63, 240, 255, 252, 255, 252, 63, 240 +db 63, 240, 15, 192, 15, 192, 3, 0, 3, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 192, 3, 192, 15, 240, 15, 240 +db 15, 240, 15, 240, 252, 63, 252, 63, 252, 63 +db 252, 63, 252, 63, 252, 63, 3, 192, 3, 192 +db 3, 192, 3, 192, 15, 240, 15, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 3, 192, 3, 192 +db 15, 240, 15, 240, 63, 252, 63, 252, 255, 255 +db 255, 255, 255, 255, 255, 255, 63, 252, 63, 252 +db 3, 192, 3, 192, 3, 192, 3, 192, 15, 240 +db 15, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 192, 3, 192, 15, 240, 15, 240 +db 15, 240, 15, 240, 3, 192, 3, 192, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 252, 63, 252, 63 +db 240, 15, 240, 15, 240, 15, 240, 15, 252, 63 +db 252, 63, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 15, 240, 15, 240 +db 60, 60, 60, 60, 48, 12, 48, 12, 48, 12 +db 48, 12, 60, 60, 60, 60, 15, 240, 15, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 240, 15, 240, 15, 195, 195, 195, 195, 207, 243 +db 207, 243, 207, 243, 207, 243, 195, 195, 195, 195 +db 240, 15, 240, 15, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 252, 3, 252, 0, 252, 0, 252 +db 3, 204, 3, 204, 15, 12, 15, 12, 63, 192 +db 63, 192, 240, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 240, 240, 63, 192 +db 63, 192, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 15, 240, 15, 240 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 15, 240, 15, 240 +db 3, 192, 3, 192, 63, 252, 63, 252, 3, 192 +db 3, 192, 3, 192, 3, 192, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 15, 255, 15, 255, 15, 15, 15, 15, 15, 255 +db 15, 255, 15, 0, 15, 0, 15, 0, 15, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 63, 0 +db 63, 0, 255, 0, 255, 0, 252, 0, 252, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 63, 255, 63, 255, 60, 15 +db 60, 15, 63, 255, 63, 255, 60, 15, 60, 15 +db 60, 15, 60, 15, 60, 15, 60, 15, 60, 15 +db 60, 15, 60, 63, 60, 63, 252, 63, 252, 63 +db 252, 60, 252, 60, 240, 0, 240, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 192, 3, 192, 3, 192, 3, 192 +db 243, 207, 243, 207, 15, 240, 15, 240, 252, 63 +db 252, 63, 15, 240, 15, 240, 243, 207, 243, 207 +db 3, 192, 3, 192, 3, 192, 3, 192, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 192, 0 +db 192, 0, 240, 0, 240, 0, 252, 0, 252, 0 +db 255, 0, 255, 0, 255, 192, 255, 192, 255, 252 +db 255, 252, 255, 192, 255, 192, 255, 0, 255, 0 +db 252, 0, 252, 0, 240, 0, 240, 0, 192, 0 +db 192, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 12, 0, 12, 0, 60, 0, 60 +db 0, 252, 0, 252, 3, 252, 3, 252, 15, 252 +db 15, 252, 255, 252, 255, 252, 15, 252, 15, 252 +db 3, 252, 3, 252, 0, 252, 0, 252, 0, 60 +db 0, 60, 0, 12, 0, 12, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 3, 192, 3, 192, 15, 240, 15, 240, 63, 252 +db 63, 252, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 63, 252, 63, 252, 15, 240 +db 15, 240, 3, 192, 3, 192, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 0, 0, 0, 0, 60, 60, 60, 60 +db 60, 60, 60, 60, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 255 +db 63, 255, 243, 207, 243, 207, 243, 207, 243, 207 +db 243, 207, 243, 207, 63, 207, 63, 207, 3, 207 +db 3, 207, 3, 207, 3, 207, 3, 207, 3, 207 +db 3, 207, 3, 207, 3, 207, 3, 207, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 240 +db 63, 240, 240, 60, 240, 60, 60, 0, 60, 0 +db 15, 192, 15, 192, 60, 240, 60, 240, 240, 60 +db 240, 60, 240, 60, 240, 60, 60, 240, 60, 240 +db 15, 192, 15, 192, 0, 240, 0, 240, 240, 60 +db 240, 60, 63, 240, 63, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 252, 255, 252, 255, 252, 255, 252, 255, 252 +db 255, 252, 255, 252, 255, 252, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 3, 192, 3, 192, 15, 240, 15, 240, 63, 252 +db 63, 252, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 63, 252, 63, 252, 15, 240 +db 15, 240, 3, 192, 3, 192, 63, 252, 63, 252 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 192, 3, 192, 15, 240 +db 15, 240, 63, 252, 63, 252, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 63, 252, 63, 252 +db 15, 240, 15, 240, 3, 192, 3, 192, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 192, 3, 192, 0, 240 +db 0, 240, 255, 252, 255, 252, 0, 240, 0, 240 +db 3, 192, 3, 192, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 15, 0 +db 15, 0, 60, 0, 60, 0, 255, 252, 255, 252 +db 60, 0, 60, 0, 15, 0, 15, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 240, 0, 240, 0 +db 240, 0, 240, 0, 240, 0, 240, 0, 255, 252 +db 255, 252, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 12, 192, 12, 192 +db 60, 240, 60, 240, 255, 252, 255, 252, 60, 240 +db 60, 240, 12, 192, 12, 192, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 3, 0, 3, 0 +db 15, 192, 15, 192, 15, 192, 15, 192, 63, 240 +db 63, 240, 63, 240, 63, 240, 255, 252, 255, 252 +db 255, 252, 255, 252, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 252, 255, 252, 255, 252, 255, 252, 63, 240 +db 63, 240, 63, 240, 63, 240, 15, 192, 15, 192 +db 15, 192, 15, 192, 3, 0, 3, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 3, 192, 3, 192, 15, 240, 15, 240, 15, 240 +db 15, 240, 15, 240, 15, 240, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 0, 0 +db 0, 0, 3, 192, 3, 192, 3, 192, 3, 192 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 12, 48, 12, 48, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 60, 240, 60, 240, 60, 240, 60, 240 +db 255, 252, 255, 252, 60, 240, 60, 240, 60, 240 +db 60, 240, 60, 240, 60, 240, 255, 252, 255, 252 +db 60, 240, 60, 240, 60, 240, 60, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 192, 3, 192, 3, 192 +db 3, 192, 63, 240, 63, 240, 240, 60, 240, 60 +db 240, 12, 240, 12, 240, 0, 240, 0, 63, 240 +db 63, 240, 0, 60, 0, 60, 0, 60, 0, 60 +db 192, 60, 192, 60, 240, 60, 240, 60, 63, 240 +db 63, 240, 3, 192, 3, 192, 3, 192, 3, 192 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 240, 12, 240, 12, 240, 60 +db 240, 60, 0, 240, 0, 240, 3, 192, 3, 192 +db 15, 0, 15, 0, 60, 0, 60, 0, 240, 60 +db 240, 60, 192, 60, 192, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 15, 192, 15, 192, 60, 240, 60, 240, 60, 240 +db 60, 240, 15, 192, 15, 192, 63, 60, 63, 60 +db 243, 240, 243, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 63, 60, 63, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 15, 0 +db 15, 0, 60, 0, 60, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 240 +db 0, 240, 3, 192, 3, 192, 15, 0, 15, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 15, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 15, 0 +db 3, 192, 3, 192, 0, 240, 0, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 15, 0, 15, 0, 3, 192, 3, 192 +db 0, 240, 0, 240, 0, 240, 0, 240, 0, 240 +db 0, 240, 0, 240, 0, 240, 0, 240, 0, 240 +db 0, 240, 0, 240, 3, 192, 3, 192, 15, 0 +db 15, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 60, 60 +db 60, 60, 15, 240, 15, 240, 255, 255, 255, 255 +db 15, 240, 15, 240, 60, 60, 60, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 192, 3, 192, 3, 192, 3, 192 +db 63, 252, 63, 252, 3, 192, 3, 192, 3, 192 +db 3, 192, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 15, 0, 15, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 252 +db 255, 252, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 192, 3, 192, 3, 192 +db 3, 192, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 12, 0, 12, 0, 60 +db 0, 60, 0, 240, 0, 240, 3, 192, 3, 192 +db 15, 0, 15, 0, 60, 0, 60, 0, 240, 0 +db 240, 0, 192, 0, 192, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 63, 240, 63, 240, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 252, 240, 252, 243, 60, 243, 60 +db 252, 60, 252, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 63, 240, 63, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 192, 3, 192, 15, 192 +db 15, 192, 63, 192, 63, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 63, 252, 63, 252, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 240 +db 63, 240, 240, 60, 240, 60, 0, 60, 0, 60 +db 0, 240, 0, 240, 3, 192, 3, 192, 15, 0 +db 15, 0, 60, 0, 60, 0, 240, 0, 240, 0 +db 240, 60, 240, 60, 255, 252, 255, 252, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 63, 240, 63, 240, 240, 60, 240, 60 +db 0, 60, 0, 60, 0, 60, 0, 60, 15, 240 +db 15, 240, 0, 60, 0, 60, 0, 60, 0, 60 +db 0, 60, 0, 60, 240, 60, 240, 60, 63, 240 +db 63, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 240, 0, 240 +db 3, 240, 3, 240, 15, 240, 15, 240, 60, 240 +db 60, 240, 240, 240, 240, 240, 255, 252, 255, 252 +db 0, 240, 0, 240, 0, 240, 0, 240, 0, 240 +db 0, 240, 3, 252, 3, 252, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 252, 255, 252, 240, 0, 240, 0, 240, 0 +db 240, 0, 240, 0, 240, 0, 255, 240, 255, 240 +db 0, 60, 0, 60, 0, 60, 0, 60, 0, 60 +db 0, 60, 240, 60, 240, 60, 63, 240, 63, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 15, 192, 15, 192, 60, 0 +db 60, 0, 240, 0, 240, 0, 240, 0, 240, 0 +db 255, 240, 255, 240, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 63, 240, 63, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 252 +db 255, 252, 240, 60, 240, 60, 0, 60, 0, 60 +db 0, 60, 0, 60, 0, 240, 0, 240, 3, 192 +db 3, 192, 15, 0, 15, 0, 15, 0, 15, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 63, 240, 63, 240, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 63, 240 +db 63, 240, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 63, 240 +db 63, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 63, 240, 63, 240 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 63, 252, 63, 252, 0, 60, 0, 60 +db 0, 60, 0, 60, 0, 60, 0, 60, 0, 240 +db 0, 240, 63, 192, 63, 192, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 3, 192 +db 3, 192, 3, 192, 3, 192, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 3, 192 +db 3, 192, 3, 192, 3, 192, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 192, 3, 192, 3, 192, 3, 192 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 192, 3, 192, 3, 192, 3, 192 +db 15, 0, 15, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 60, 0, 60, 0, 240, 0, 240 +db 3, 192, 3, 192, 15, 0, 15, 0, 60, 0 +db 60, 0, 15, 0, 15, 0, 3, 192, 3, 192 +db 0, 240, 0, 240, 0, 60, 0, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 63, 252, 63, 252, 0, 0 +db 0, 0, 0, 0, 0, 0, 63, 252, 63, 252 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 60, 0, 60, 0, 15, 0, 15, 0, 3, 192 +db 3, 192, 0, 240, 0, 240, 0, 60, 0, 60 +db 0, 240, 0, 240, 3, 192, 3, 192, 15, 0 +db 15, 0, 60, 0, 60, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 63, 240, 63, 240, 240, 60, 240, 60, 240, 60 +db 240, 60, 0, 240, 0, 240, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 0, 0 +db 0, 0, 3, 192, 3, 192, 3, 192, 3, 192 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 240 +db 63, 240, 240, 60, 240, 60, 240, 60, 240, 60 +db 243, 252, 243, 252, 243, 252, 243, 252, 243, 252 +db 243, 252, 243, 240, 243, 240, 240, 0, 240, 0 +db 63, 240, 63, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 3, 0 +db 3, 0, 15, 192, 15, 192, 60, 240, 60, 240 +db 240, 60, 240, 60, 240, 60, 240, 60, 255, 252 +db 255, 252, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 240, 255, 240, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 63, 240 +db 63, 240, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 255, 240 +db 255, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 15, 240, 15, 240 +db 60, 60, 60, 60, 240, 12, 240, 12, 240, 0 +db 240, 0, 240, 0, 240, 0, 240, 0, 240, 0 +db 240, 0, 240, 0, 240, 12, 240, 12, 60, 60 +db 60, 60, 15, 240, 15, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 192, 255, 192, 60, 240, 60, 240, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 240, 60, 240, 255, 192, 255, 192 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 255, 252, 255, 252, 60, 60 +db 60, 60, 60, 12, 60, 12, 60, 192, 60, 192 +db 63, 192, 63, 192, 60, 192, 60, 192, 60, 0 +db 60, 0, 60, 12, 60, 12, 60, 60, 60, 60 +db 255, 252, 255, 252, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 252 +db 255, 252, 60, 60, 60, 60, 60, 12, 60, 12 +db 60, 192, 60, 192, 63, 192, 63, 192, 60, 192 +db 60, 192, 60, 0, 60, 0, 60, 0, 60, 0 +db 60, 0, 60, 0, 255, 0, 255, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 15, 240, 15, 240, 60, 60, 60, 60 +db 240, 12, 240, 12, 240, 0, 240, 0, 240, 0 +db 240, 0, 243, 252, 243, 252, 240, 60, 240, 60 +db 240, 60, 240, 60, 60, 60, 60, 60, 15, 204 +db 15, 204, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 255, 252, 255, 252, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 15, 240, 15, 240, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 15, 240, 15, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 252, 3, 252, 0, 240 +db 0, 240, 0, 240, 0, 240, 0, 240, 0, 240 +db 0, 240, 0, 240, 0, 240, 0, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 240, 240, 240, 240 +db 63, 192, 63, 192, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 252, 60 +db 252, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 240, 60, 240, 63, 192, 63, 192, 63, 192 +db 63, 192, 60, 240, 60, 240, 60, 60, 60, 60 +db 60, 60, 60, 60, 252, 60, 252, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 0, 255, 0, 60, 0, 60, 0 +db 60, 0, 60, 0, 60, 0, 60, 0, 60, 0 +db 60, 0, 60, 0, 60, 0, 60, 0, 60, 0 +db 60, 12, 60, 12, 60, 60, 60, 60, 255, 252 +db 255, 252, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 240, 60, 240, 60 +db 252, 252, 252, 252, 255, 252, 255, 252, 255, 252 +db 255, 252, 243, 60, 243, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 240, 60, 240, 60, 252, 60, 252, 60, 255, 60 +db 255, 60, 255, 252, 255, 252, 243, 252, 243, 252 +db 240, 252, 240, 252, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 63, 240, 63, 240, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 63, 240, 63, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 240 +db 255, 240, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 63, 240, 63, 240, 60, 0 +db 60, 0, 60, 0, 60, 0, 60, 0, 60, 0 +db 60, 0, 60, 0, 255, 0, 255, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 63, 240, 63, 240, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 243, 60, 243, 60, 243, 252, 243, 252, 63, 240 +db 63, 240, 0, 240, 0, 240, 0, 252, 0, 252 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 255, 240, 255, 240 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 63, 240, 63, 240, 60, 240, 60, 240 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 252, 60, 252, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 63, 240, 63, 240, 240, 60, 240, 60, 240, 60 +db 240, 60, 60, 0, 60, 0, 15, 192, 15, 192 +db 0, 240, 0, 240, 0, 60, 0, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 63, 240, 63, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 63, 252, 63, 252, 63, 252 +db 63, 252, 51, 204, 51, 204, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 15, 240, 15, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 63, 240, 63, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 60, 240, 60, 240, 15, 192, 15, 192, 3, 0 +db 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 255, 252, 255, 252, 252, 252 +db 252, 252, 60, 240, 60, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 240, 60, 240, 60, 240, 60, 240, 60, 60, 240 +db 60, 240, 63, 240, 63, 240, 15, 192, 15, 192 +db 15, 192, 15, 192, 63, 240, 63, 240, 60, 240 +db 60, 240, 240, 60, 240, 60, 240, 60, 240, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 15, 240, 15, 240, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 15, 240, 15, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 252 +db 255, 252, 240, 60, 240, 60, 192, 60, 192, 60 +db 0, 240, 0, 240, 3, 192, 3, 192, 15, 0 +db 15, 0, 60, 0, 60, 0, 240, 12, 240, 12 +db 240, 60, 240, 60, 255, 252, 255, 252, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 15, 240, 15, 240, 15, 0, 15, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 15, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 15, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 15, 240 +db 15, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 192, 0, 192, 0, 240, 0, 240, 0, 252, 0 +db 252, 0, 63, 0, 63, 0, 15, 192, 15, 192 +db 3, 240, 3, 240, 0, 252, 0, 252, 0, 60 +db 0, 60, 0, 12, 0, 12, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 15, 240, 15, 240, 0, 240, 0, 240, 0, 240 +db 0, 240, 0, 240, 0, 240, 0, 240, 0, 240 +db 0, 240, 0, 240, 0, 240, 0, 240, 0, 240 +db 0, 240, 0, 240, 0, 240, 15, 240, 15, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 3, 0, 3, 0 +db 15, 192, 15, 192, 60, 240, 60, 240, 240, 60 +db 240, 60, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 255, 255, 255, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 15, 0 +db 15, 0, 3, 192, 3, 192, 0, 240, 0, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 192 +db 63, 192, 0, 240, 0, 240, 63, 240, 63, 240 +db 240, 240, 240, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 63, 60, 63, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 252, 0, 252, 0, 60, 0, 60, 0, 60, 0 +db 60, 0, 63, 192, 63, 192, 60, 240, 60, 240 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 63, 240, 63, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 63, 240, 63, 240 +db 240, 60, 240, 60, 240, 0, 240, 0, 240, 0 +db 240, 0, 240, 0, 240, 0, 240, 60, 240, 60 +db 63, 240, 63, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 3, 240 +db 3, 240, 0, 240, 0, 240, 0, 240, 0, 240 +db 15, 240, 15, 240, 60, 240, 60, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 240, 240, 63, 60, 63, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 63, 240, 63, 240, 240, 60 +db 240, 60, 255, 252, 255, 252, 240, 0, 240, 0 +db 240, 0, 240, 0, 240, 60, 240, 60, 63, 240 +db 63, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 3, 240, 3, 240 +db 15, 60, 15, 60, 15, 12, 15, 12, 15, 0 +db 15, 0, 63, 192, 63, 192, 15, 0, 15, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 15, 0 +db 15, 0, 63, 192, 63, 192, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 63, 60, 63, 60, 240, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 63, 240, 63, 240 +db 0, 240, 0, 240, 240, 240, 240, 240, 63, 192 +db 63, 192, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 252, 0, 252, 0, 60, 0 +db 60, 0, 60, 0, 60, 0, 60, 240, 60, 240 +db 63, 60, 63, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 252, 60, 252, 60, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 3, 192 +db 3, 192, 3, 192, 3, 192, 0, 0, 0, 0 +db 15, 192, 15, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 15, 240, 15, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 60, 0, 60, 0, 60, 0, 60 +db 0, 0, 0, 0, 0, 252, 0, 252, 0, 60 +db 0, 60, 0, 60, 0, 60, 0, 60, 0, 60 +db 0, 60, 0, 60, 0, 60, 0, 60, 0, 60 +db 0, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 15, 240, 15, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 252, 0, 252, 0 +db 60, 0, 60, 0, 60, 0, 60, 0, 60, 60 +db 60, 60, 60, 240, 60, 240, 63, 192, 63, 192 +db 63, 192, 63, 192, 60, 240, 60, 240, 60, 60 +db 60, 60, 252, 60, 252, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 15, 192, 15, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 15, 240, 15, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 252, 240, 252, 240 +db 255, 252, 255, 252, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 240, 60, 240, 60, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 243, 240, 243, 240, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 63, 240, 63, 240, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 63, 240 +db 63, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 243, 240 +db 243, 240, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 63, 240, 63, 240, 60, 0, 60, 0 +db 60, 0, 60, 0, 255, 0, 255, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 63, 60, 63, 60, 240, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 63, 240, 63, 240 +db 0, 240, 0, 240, 0, 240, 0, 240, 3, 252 +db 3, 252, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 243, 240, 243, 240 +db 63, 60, 63, 60, 60, 60, 60, 60, 60, 0 +db 60, 0, 60, 0, 60, 0, 60, 0, 60, 0 +db 255, 0, 255, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 63, 240, 63, 240, 240, 60, 240, 60, 60, 0 +db 60, 0, 15, 192, 15, 192, 0, 240, 0, 240 +db 240, 60, 240, 60, 63, 240, 63, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 0, 3, 0, 15, 0, 15, 0 +db 15, 0, 15, 0, 255, 240, 255, 240, 15, 0 +db 15, 0, 15, 0, 15, 0, 15, 0, 15, 0 +db 15, 0, 15, 0, 15, 60, 15, 60, 3, 240 +db 3, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 240, 240 +db 240, 240, 240, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 63, 60, 63, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 60, 240, 60, 240, 15, 192, 15, 192 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 240, 60, 240, 60 +db 240, 60, 240, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 255, 252, 255, 252 +db 60, 240, 60, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 240, 60, 240, 60, 60, 240, 60, 240, 15, 192 +db 15, 192, 15, 192, 15, 192, 15, 192, 15, 192 +db 60, 240, 60, 240, 240, 60, 240, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 63, 252 +db 63, 252, 0, 60, 0, 60, 0, 240, 0, 240 +db 255, 192, 255, 192, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 252 +db 255, 252, 240, 240, 240, 240, 3, 192, 3, 192 +db 15, 0, 15, 0, 60, 0, 60, 0, 240, 60 +db 240, 60, 255, 252, 255, 252, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 252, 0, 252, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 63, 0, 63, 0 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 0, 252, 0, 252 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 0 +db 63, 0, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 0, 252, 0, 252, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 63, 0, 63, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 60 +db 63, 60, 243, 240, 243, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 0, 3, 0, 15, 192 +db 15, 192, 60, 240, 60, 240, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 255, 252 +db 255, 252, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 3, 252, 3, 252, 15, 60, 15, 60, 60, 60 +db 60, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 255, 252, 255, 252, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 255, 252, 255, 252, 60, 12 +db 60, 12, 60, 0, 60, 0, 60, 0, 60, 0 +db 63, 240, 63, 240, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 255, 240, 255, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 240 +db 255, 240, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 63, 240, 63, 240, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 255, 240, 255, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 252, 255, 252, 60, 60, 60, 60 +db 60, 12, 60, 12, 60, 0, 60, 0, 60, 0 +db 60, 0, 60, 0, 60, 0, 60, 0, 60, 0 +db 60, 0, 60, 0, 60, 0, 60, 0, 255, 0 +db 255, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 3, 252, 3, 252 +db 15, 60, 15, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 255, 255, 255, 255, 240, 15, 240, 15 +db 192, 3, 192, 3, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 252, 255, 252, 60, 60, 60, 60, 60, 12 +db 60, 12, 60, 192, 60, 192, 63, 192, 63, 192 +db 60, 192, 60, 192, 60, 0, 60, 0, 60, 12 +db 60, 12, 60, 60, 60, 60, 255, 252, 255, 252 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 243, 207, 243, 207, 243, 207 +db 243, 207, 51, 204, 51, 204, 51, 204, 51, 204 +db 63, 252, 63, 252, 63, 252, 63, 252, 51, 204 +db 51, 204, 243, 207, 243, 207, 243, 207, 243, 207 +db 243, 207, 243, 207, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 240 +db 63, 240, 240, 60, 240, 60, 0, 60, 0, 60 +db 0, 60, 0, 60, 15, 240, 15, 240, 0, 60 +db 0, 60, 0, 60, 0, 60, 0, 60, 0, 60 +db 240, 60, 240, 60, 63, 240, 63, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 252, 240, 252, 243, 252 +db 243, 252, 255, 60, 255, 60, 252, 60, 252, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 60, 240 +db 60, 240, 15, 192, 15, 192, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 252 +db 240, 252, 243, 252, 243, 252, 255, 60, 255, 60 +db 252, 60, 252, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 252, 60, 252, 60, 60, 60, 60, 60, 60, 240 +db 60, 240, 60, 240, 60, 240, 63, 192, 63, 192 +db 63, 192, 63, 192, 60, 240, 60, 240, 60, 240 +db 60, 240, 60, 60, 60, 60, 252, 60, 252, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 255, 3, 255, 15, 60 +db 15, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 240, 255, 240, 255, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 240, 60 +db 240, 60, 252, 252, 252, 252, 255, 252, 255, 252 +db 255, 252, 255, 252, 243, 60, 243, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 255, 252 +db 255, 252, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 63, 240, 63, 240 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 63, 240, 63, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 252, 255, 252, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 255, 240, 255, 240, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 63, 240, 63, 240, 60, 0 +db 60, 0, 60, 0, 60, 0, 60, 0, 60, 0 +db 255, 0, 255, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 240 +db 63, 240, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 0, 240, 0, 240, 0, 240, 0, 240, 0 +db 240, 0, 240, 0, 240, 0, 240, 12, 240, 12 +db 240, 60, 240, 60, 63, 240, 63, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 255, 255, 255, 243, 207, 243, 207 +db 195, 195, 195, 195, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 15, 240 +db 15, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 63, 252, 63, 252 +db 0, 60, 0, 60, 0, 60, 0, 60, 240, 60 +db 240, 60, 63, 240, 63, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 63, 252, 63, 252, 243, 207, 243, 207, 243, 207 +db 243, 207, 243, 207, 243, 207, 243, 207, 243, 207 +db 243, 207, 243, 207, 243, 207, 243, 207, 63, 252 +db 63, 252, 3, 192, 3, 192, 15, 240, 15, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 240, 60, 240, 60, 240, 60 +db 240, 60, 60, 240, 60, 240, 63, 240, 63, 240 +db 15, 192, 15, 192, 15, 192, 15, 192, 63, 240 +db 63, 240, 60, 240, 60, 240, 240, 60, 240, 60 +db 240, 60, 240, 60, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 255, 255, 255, 255, 0, 15 +db 0, 15, 0, 15, 0, 15, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 63, 252, 63, 252, 0, 60, 0, 60 +db 0, 60, 0, 60, 0, 60, 0, 60, 0, 60 +db 0, 60, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 255, 252, 255, 252, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 255, 255, 255, 255 +db 0, 15, 0, 15, 0, 15, 0, 15, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 255, 192, 255, 192, 255, 0 +db 255, 0, 207, 0, 207, 0, 15, 0, 15, 0 +db 15, 252, 15, 252, 15, 15, 15, 15, 15, 15 +db 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 +db 63, 252, 63, 252, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 240, 15 +db 240, 15, 240, 15, 240, 15, 240, 15, 240, 15 +db 240, 15, 240, 15, 255, 15, 255, 15, 243, 207 +db 243, 207, 243, 207, 243, 207, 243, 207, 243, 207 +db 243, 207, 243, 207, 255, 15, 255, 15, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 0, 255, 0, 60, 0, 60, 0 +db 60, 0, 60, 0, 60, 0, 60, 0, 63, 240 +db 63, 240, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 255, 240 +db 255, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 63, 240, 63, 240 +db 240, 60, 240, 60, 0, 60, 0, 60, 12, 60 +db 12, 60, 15, 252, 15, 252, 12, 60, 12, 60 +db 0, 60, 0, 60, 0, 60, 0, 60, 240, 60 +db 240, 60, 63, 240, 63, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 240, 252, 240, 252, 243, 207, 243, 207, 243, 207 +db 243, 207, 243, 207, 243, 207, 255, 207, 255, 207 +db 243, 207, 243, 207, 243, 207, 243, 207, 243, 207 +db 243, 207, 243, 207, 243, 207, 240, 252, 240, 252 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 15, 255, 15, 255, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 15, 252, 15, 252, 15, 252, 15, 252, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 252, 63, 252, 63, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 63, 192, 63, 192, 0, 240, 0, 240, 63, 240 +db 63, 240, 240, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 240, 240, 63, 60, 63, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 12 +db 0, 12, 0, 60, 0, 60, 63, 240, 63, 240 +db 240, 0, 240, 0, 240, 0, 240, 0, 255, 240 +db 255, 240, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 63, 240 +db 63, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 240 +db 255, 240, 60, 60, 60, 60, 60, 60, 60, 60 +db 63, 240, 63, 240, 60, 60, 60, 60, 60, 60 +db 60, 60, 255, 240, 255, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 252, 255, 252, 60, 12, 60, 12 +db 60, 12, 60, 12, 60, 0, 60, 0, 60, 0 +db 60, 0, 60, 0, 60, 0, 255, 0, 255, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 3, 252, 3, 252 +db 15, 60, 15, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 255, 255, 255, 255, 240, 15, 240, 15, 240, 15 +db 240, 15, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 63, 240, 63, 240, 240, 60, 240, 60, 240, 60 +db 240, 60, 255, 252, 255, 252, 240, 0, 240, 0 +db 240, 60, 240, 60, 63, 240, 63, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 243, 60, 243, 60, 243, 60 +db 243, 60, 51, 48, 51, 48, 63, 240, 63, 240 +db 51, 48, 51, 48, 243, 60, 243, 60, 243, 60 +db 243, 60, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 240 +db 63, 240, 240, 60, 240, 60, 0, 60, 0, 60 +db 15, 240, 15, 240, 0, 60, 0, 60, 240, 60 +db 240, 60, 63, 240, 63, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 252, 240, 252, 243, 60, 243, 60, 252, 60 +db 252, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 60, 240 +db 60, 240, 15, 192, 15, 192, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 252, 240, 252, 243, 60 +db 243, 60, 252, 60, 252, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 252, 60, 252, 60, 60, 240, 60, 240, 63, 192 +db 63, 192, 63, 192, 63, 192, 60, 240, 60, 240 +db 60, 60, 60, 60, 252, 60, 252, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 252, 3, 252, 15, 60 +db 15, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 252, 60 +db 252, 60, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 240, 60 +db 240, 60, 252, 252, 252, 252, 255, 252, 255, 252 +db 255, 252, 255, 252, 243, 60, 243, 60, 243, 60 +db 243, 60, 240, 60, 240, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 255, 252, 255, 252, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 63, 240, 63, 240 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 63, 240, 63, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 252, 255, 252, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 3, 3, 3, 48, 48 +db 48, 48, 3, 3, 3, 3, 48, 48, 48, 48 +db 3, 3, 3, 3, 48, 48, 48, 48, 3, 3 +db 3, 3, 48, 48, 48, 48, 3, 3, 3, 3 +db 48, 48, 48, 48, 3, 3, 3, 3, 48, 48 +db 48, 48, 3, 3, 3, 3, 48, 48, 48, 48 +db 3, 3, 3, 3, 48, 48, 48, 48, 51, 51 +db 51, 51, 204, 204, 204, 204, 51, 51, 51, 51 +db 204, 204, 204, 204, 51, 51, 51, 51, 204, 204 +db 204, 204, 51, 51, 51, 51, 204, 204, 204, 204 +db 51, 51, 51, 51, 204, 204, 204, 204, 51, 51 +db 51, 51, 204, 204, 204, 204, 51, 51, 51, 51 +db 204, 204, 204, 204, 51, 51, 51, 51, 204, 204 +db 204, 204, 243, 243, 243, 243, 63, 63, 63, 63 +db 243, 243, 243, 243, 63, 63, 63, 63, 243, 243 +db 243, 243, 63, 63, 63, 63, 243, 243, 243, 243 +db 63, 63, 63, 63, 243, 243, 243, 243, 63, 63 +db 63, 63, 243, 243, 243, 243, 63, 63, 63, 63 +db 243, 243, 243, 243, 63, 63, 63, 63, 243, 243 +db 243, 243, 63, 63, 63, 63, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 255, 192 +db 255, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 255, 192, 255, 192, 3, 192 +db 3, 192, 255, 192, 255, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 255, 60, 255, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 252, 255, 252, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 255, 192, 255, 192 +db 3, 192, 3, 192, 255, 192, 255, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 255, 60, 255, 60, 0, 60, 0, 60, 255, 60 +db 255, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 252 +db 255, 252, 0, 60, 0, 60, 255, 60, 255, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 255, 60, 255, 60, 0, 60, 0, 60 +db 255, 252, 255, 252, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 255, 252, 255, 252, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 255, 192, 255, 192, 3, 192, 3, 192, 255, 192 +db 255, 192, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 192, 255, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 255, 3, 255 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 255, 255, 255, 255, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 255, 255, 255, 255, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 255 +db 3, 255, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 255, 255, 255, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 255, 255, 255, 255 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 255, 3, 255, 3, 192, 3, 192 +db 3, 255, 3, 255, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 63, 15, 63, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 63, 15, 63, 15, 0, 15, 0, 15, 255 +db 15, 255, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 15, 255, 15, 255, 15, 0 +db 15, 0, 15, 63, 15, 63, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 255, 63 +db 255, 63, 0, 0, 0, 0, 255, 255, 255, 255 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 255, 255, 255, 255, 0, 0, 0, 0 +db 255, 63, 255, 63, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 63, 15, 63 +db 15, 0, 15, 0, 15, 63, 15, 63, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 255, 255, 255, 255, 0, 0, 0, 0, 255, 255 +db 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 255, 63, 255, 63, 0, 0 +db 0, 0, 255, 63, 255, 63, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 255, 255 +db 255, 255, 0, 0, 0, 0, 255, 255, 255, 255 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 255, 255, 255, 255, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 255, 255, 255, 255 +db 0, 0, 0, 0, 255, 255, 255, 255, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 255 +db 255, 255, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 255, 15, 255, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 255 +db 3, 255, 3, 192, 3, 192, 3, 255, 3, 255 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 3, 255, 3, 255, 3, 192, 3, 192 +db 3, 255, 3, 255, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 15, 255, 15, 255, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 255, 255 +db 255, 255, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 15, 60, 15, 60, 15, 60 +db 15, 60, 15, 60, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 255, 255, 255, 255, 3, 192 +db 3, 192, 255, 255, 255, 255, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 255, 192, 255, 192 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 3, 255, 3, 255, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 0, 255, 0, 255, 0 +db 255, 0, 255, 0, 255, 0, 255, 0, 255, 0 +db 255, 0, 255, 0, 255, 0, 255, 0, 255, 0 +db 255, 0, 255, 0, 255, 0, 255, 0, 255, 0 +db 255, 0, 255, 0, 255, 0, 255, 0, 255, 0 +db 255, 0, 255, 0, 255, 0, 255, 0, 255, 0 +db 255, 0, 255, 0, 255, 0, 255, 0, 0, 255 +db 0, 255, 0, 255, 0, 255, 0, 255, 0, 255 +db 0, 255, 0, 255, 0, 255, 0, 255, 0, 255 +db 0, 255, 0, 255, 0, 255, 0, 255, 0, 255 +db 0, 255, 0, 255, 0, 255, 0, 255, 0, 255 +db 0, 255, 0, 255, 0, 255, 0, 255, 0, 255 +db 0, 255, 0, 255, 0, 255, 0, 255, 0, 255 +db 0, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 243, 240, 243, 240 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 60, 60, 60, 60, 60, 60, 60, 60, 60, 60 +db 63, 240, 63, 240, 60, 0, 60, 0, 60, 0 +db 60, 0, 255, 0, 255, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 63, 240, 63, 240, 240, 60, 240, 60, 240, 0 +db 240, 0, 240, 0, 240, 0, 240, 0, 240, 0 +db 240, 60, 240, 60, 63, 240, 63, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 63, 252, 63, 252, 51, 204 +db 51, 204, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 15, 240 +db 15, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 63, 252 +db 63, 252, 0, 60, 0, 60, 0, 60, 0, 60 +db 240, 60, 240, 60, 63, 240, 63, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 15, 240, 15, 240, 3, 192 +db 3, 192, 63, 252, 63, 252, 243, 207, 243, 207 +db 243, 207, 243, 207, 243, 207, 243, 207, 243, 207 +db 243, 207, 243, 207, 243, 207, 63, 252, 63, 252 +db 3, 192, 3, 192, 3, 192, 3, 192, 15, 240 +db 15, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 240, 60, 240, 60 +db 60, 240, 60, 240, 15, 192, 15, 192, 15, 192 +db 15, 192, 15, 192, 15, 192, 60, 240, 60, 240 +db 240, 60, 240, 60, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 255, 255, 255, 255, 0, 15 +db 0, 15, 0, 15, 0, 15, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 63, 252, 63, 252, 0, 60, 0, 60, 0, 60 +db 0, 60, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 243, 60 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 255, 252, 255, 252, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 243, 60, 243, 60 +db 243, 60, 243, 60, 243, 60, 255, 252, 255, 252 +db 0, 15, 0, 15, 0, 15, 0, 15, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 255, 192, 255, 192 +db 207, 0, 207, 0, 207, 0, 207, 0, 15, 252 +db 15, 252, 15, 15, 15, 15, 15, 15, 15, 15 +db 63, 252, 63, 252, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 255, 60, 255, 60, 243, 252, 243, 252 +db 243, 252, 243, 252, 255, 60, 255, 60, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 255, 0, 255, 0, 60, 0 +db 60, 0, 60, 0, 60, 0, 63, 240, 63, 240 +db 60, 60, 60, 60, 60, 60, 60, 60, 255, 240 +db 255, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 63, 240 +db 63, 240, 240, 60, 240, 60, 0, 60, 0, 60 +db 15, 252, 15, 252, 0, 60, 0, 60, 240, 60 +db 240, 60, 63, 240, 63, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 240, 252, 240, 252, 243, 207, 243, 207 +db 243, 207, 243, 207, 255, 207, 255, 207, 243, 207 +db 243, 207, 243, 207, 243, 207, 240, 252, 240, 252 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 63, 255, 63, 255 +db 240, 60, 240, 60, 240, 60, 240, 60, 63, 252 +db 63, 252, 15, 60, 15, 60, 60, 60, 60, 60 +db 252, 63, 252, 63, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 60, 240, 60, 240, 0, 0, 0, 0, 255, 252 +db 255, 252, 60, 60, 60, 60, 60, 12, 60, 12 +db 60, 192, 60, 192, 63, 192, 63, 192, 60, 192 +db 60, 192, 60, 0, 60, 0, 60, 12, 60, 12 +db 60, 60, 60, 60, 255, 252, 255, 252, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 60, 240, 60, 240 +db 0, 0, 0, 0, 63, 240, 63, 240, 240, 60 +db 240, 60, 240, 60, 240, 60, 255, 240, 255, 240 +db 240, 0, 240, 0, 240, 60, 240, 60, 63, 240 +db 63, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 63, 240, 63, 240 +db 240, 60, 240, 60, 240, 0, 240, 0, 240, 192 +db 240, 192, 255, 192, 255, 192, 240, 192, 240, 192 +db 240, 0, 240, 0, 240, 0, 240, 0, 240, 60 +db 240, 60, 63, 240, 63, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 63, 240, 63, 240, 240, 60, 240, 60 +db 240, 0, 240, 0, 255, 192, 255, 192, 240, 0 +db 240, 0, 240, 60, 240, 60, 63, 240, 63, 240 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 60, 60, 60, 60 +db 0, 0, 0, 0, 15, 240, 15, 240, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 15, 240, 15, 240, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 60, 240, 60, 240, 0, 0, 0, 0 +db 15, 192, 15, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 3, 192, 3, 192, 3, 192 +db 3, 192, 3, 192, 15, 240, 15, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 60, 240, 60, 240, 15, 192 +db 15, 192, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 63, 252, 63, 252, 0, 60, 0, 60 +db 0, 60, 0, 60, 240, 60, 240, 60, 63, 240 +db 63, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 60, 240, 60, 240, 15, 192, 15, 192, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 63, 252 +db 63, 252, 0, 60, 0, 60, 0, 60, 0, 60 +db 240, 60, 240, 60, 63, 240, 63, 240, 0, 0 +db 0, 0, 0, 0, 0, 0, 15, 192, 15, 192 +db 60, 240, 60, 240, 60, 240, 60, 240, 15, 192 +db 15, 192, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 3, 192, 3, 192, 3, 192 +db 3, 192, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 3, 192 +db 3, 192, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 252 +db 0, 252, 0, 240, 0, 240, 0, 240, 0, 240 +db 0, 240, 0, 240, 0, 240, 0, 240, 0, 240 +db 0, 240, 0, 240, 0, 240, 252, 240, 252, 240 +db 60, 240, 60, 240, 15, 240, 15, 240, 3, 240 +db 3, 240, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 240, 255, 240, 255 +db 240, 243, 240, 243, 252, 255, 252, 255, 252, 240 +db 252, 240, 255, 255, 255, 255, 243, 240, 243, 240 +db 243, 240, 243, 240, 240, 240, 240, 240, 240, 240 +db 240, 240, 240, 240, 240, 240, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 240, 60, 240, 60, 63, 240 +db 63, 240, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 240, 60, 240, 60, 240, 60, 240, 60 +db 240, 60, 63, 240, 63, 240, 240, 60, 240, 60 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 63, 252, 63, 252, 63, 252, 63, 252 +db 63, 252, 63, 252, 63, 252, 63, 252, 63, 252 +db 63, 252, 63, 252, 63, 252, 63, 252, 63, 252 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +db 0, 0, 0, 0 + +black_text: +dd 0x00CCCCCC, 0x00000000 +green_text: +dd 0x00CCCCCC, 0x0000AA00 +red_text: +dd 0x00CCCCCC, 0x00AA0000 +gray_text: +dd 0x00CCCCCC, 0x00777777 + +logo: +db 00000000b, 00000000b, 01000000b, 00000000b +db 00000000b, 00000001b, 11000000b, 00000000b +db 00000000b, 00000001b, 00000000b, 00000000b +db 11111111b, 11111111b, 11111111b, 11111111b +db 10000000b, 00000000b, 00000000b, 00000001b +db 10101010b, 10101010b, 10101010b, 01010101b +db 10000000b, 00000000b, 00001010b, 00000001b +db 10101010b, 10101010b, 10100000b, 01010101b +db 10000000b, 00000000b, 00000100b, 00000001b +db 10101010b, 10101010b, 10101110b, 01010101b +db 10000000b, 00000000b, 00000000b, 00000001b +db 11111111b, 11111111b, 11111111b, 11111111b + + +I_END: \ No newline at end of file diff --git a/programs/games/klavisha/trunk/readme.txt b/programs/games/klavisha/trunk/readme.txt new file mode 100644 index 0000000000..0e85990d7b --- /dev/null +++ b/programs/games/klavisha/trunk/readme.txt @@ -0,0 +1,87 @@ +----------------------------------------------------------- +------------ Клавиатурный тренажёр KJ|ABuIIIA ------------- +------------ для операционной системы Колибри ------------- +----------------------------------------------------------- +---------------------- Версия 0.9a ------------------------ +----------------------------------------------------------- +___________________________________________________________ +1. Общие сведения о программе +___________________________________________________________ + Клавиатурный тренажёр KJ|ABuIIIA - это программа обучения +быстрому набору для операционной системы Колибри ОС. + Ваша задача - набирать предложенные учебные тексты с +минимально возможным количеством ошибок. + При запуске программе должен быть передан параметр коман- +дной строки с указанием пути к файлу-набору упражнений в +формате KLA, например: + KLAVISHA /RD/1/BASEKURS.KLA + Если параметр командной строки не задан, программа будет +запущена в демонстрационном режиме. + В комплект поставки входит начальный курс обучения быс- +трому набору. Он находится в файле BASEKURS.KLA . Однако +применение данного курса не является обязательным: вы +можете использовать KLA-файл по вашему усмотрению. + Текущая версия программы является стабильной и может +применяться в практических целях при условии подключения +соответствующего KLA-файла. + +___________________________________________________________ +2. Создание учебных файлов. Формат KLA +___________________________________________________________ + Тексты для учебного набора хранятся в файлах с расшире- +нием KLA. При этом такие файлы должны соответствовать опре- +делённым требованиям. + KLA-файл содержит строки для набора, разделённые нуле- +вым символом (0x00). Уроки отделяются один от другого бай- +том 0xFE (ставится в конце последней строки урока вместо +байта 0x00). Файл должен заканчиваться байтом 0xFF (ста- +вится в конце последней строки последнего урока ПОСЛЕ 0xFE) + Применяемая кодировка символов - OEM 866. + Файлы KLA могут быть подготовлены с помощью шестнадцате- +ричного (HEX) редактора либо с использованием программы- +ассемблера. В комплект поставки включён файл SAMPLE.ASM. + +___________________________________________________________ +3. Технические сведения о программе KJ|ABuIIIA +___________________________________________________________ + Программа написана на чистом ассемблере x86. + Применяется ассемблер FASM. + +___________________________________________________________ +4. История версий +___________________________________________________________ + +KJ|ABuIIIA 0.9a - 29.07.2010 +- Добавлен базовый курс обучения (BASEKURS.KLA) +- Добавлен справочный файл (README.TXT) + +KJ|ABuIIIA 0.9 - 24.07.2010 +- Добавлен "счётчик строк": на экране отображается номер +текущей набираемой строки в упражнении и общее число строк. +- Добавлена возможность перезапуска упражнения ("Повторить +упражнение") и перезапуска всего учебного курса с первого +упражнения ("Начать курс заново"). +- Горизонтальный скроллинг набираемой строки (однако насто- +ятельно рекомендуется не создавать в учебных заданиях +строки длиной более 38 символов). +- По окончании упражнения выдаётся информация о средней +скорости набора +- Окно приложения при запуске теперь отображается по центру +экрана при любом разрешении + +KJ|ABuIIIA 0.25 - 23.07.2010 +- Вместо стандартного системного использован крупный шрифт +(за основу взят шрифт из пакета из репозитария Ubuntu +console-cyrillic_0.9-16_all.deb). +- Устранено мерцание окна при вводе символов +- Добавлена защита от "битых" (или неправильно подготовлен- +ных) KLA-файлов +- Улучшен интерфейс + +KJ|ABuIIIA 0.1 - 21.07.2010 +- Первая версия программы + +___________________________________________________________ +5. Список разработчиков +___________________________________________________________ + Андрей Михайлович aka Dron2004 (http://www.lvtam.ru) \ No newline at end of file diff --git a/programs/media/webcam/trunk/webcam.asm b/programs/media/webcam/trunk/webcam.asm new file mode 100644 index 0000000000..480a39a89d --- /dev/null +++ b/programs/media/webcam/trunk/webcam.asm @@ -0,0 +1,3076 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; 64 bit Menuet Webcam +; +; Compile with FASM 1.60 or above +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +data1 equ image_end+0x100000*1 ; Timestamp data +data3 equ image_end+0x100000*2 ; Image data +data4 equ image_end+0x100000*10 ; Image data time order +data5 equ image_end+0x100000*11 ; Length data time order +data6 equ image_end+0x100000*12 ; Decoded image +data8 equ 0x100000*16 ; 7M*4 - Data return, 4k aligned +data9 equ 0x100000*52 ; 1M*4 - Data length return +data10 equ 0x100000*56 ; Save snap / avi - size 16M + +scx equ 3 ; Scroll x pos +rby equ (220 shl 32+21) ; Ydim +b3y equ 0 ; B3y add +bys equ 21 ; Buttons y add +scl equ 0 ; Scroll length + +use32 + + org 0x0 + + db 'MENUET64' ; Header identifier + dq 0x01 ; Version + dq START ; Start of code + dq image_end ; Size of image + dq data10+0x100000*16 ; Memory for app + dq image_end ; Stack + dq 0x00 ; Prm + dq 0x00 ; Icon + + +turn_camera_on: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Reserves, configures and turns camera on +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + cmp [camera_state],byte 1 + je camera_on + + ; Camera present ? + + mov rax , 128 + mov rbx , 1 + int 0x60 + add rax , rbx + cmp rax , 0 + je camera_fail + + ; Configuration found ? + + cmp [sconf],dword 0 + je camera_fail + + ; Set configuration + + mov rax , 128 + mov rbx , 3 + mov rcx , 1 + mov rdx , [sconf] + int 0x60 + + ; Start camera + + mov rax , 128 + mov rbx , 4 + mov rcx , 1 + mov rdx , 1 + int 0x60 + + mov [camera_state],byte 1 + + camera_fail: + camera_on: + + ret + + +turn_camera_off: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Turns camera off and clears the reservation +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + cmp [camera_state],byte 0 + je camera_off + + ; Camera present ? + + mov rax , 128 + mov rbx , 1 + int 0x60 + add rax , rbx + cmp rax , 0 + je camera_off + + ; Stop camera + + mov rax , 128 + mov rbx , 4 + mov rcx , 1 + mov rdx , 0 + int 0x60 + + ; Set configuration 0 + + mov rax , 128 + mov rbx , 3 + mov rcx , 1 + mov rdx , 0 + int 0x60 + + camera_off: + + mov [camera_state],byte 0 + + ret + + + +server: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Server thread for webcam picture - port 8090 +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov [serveronoff],byte 1 + + mov [datasent],dword 0 + + server_open: + + ; Open port + + mov rax , 53 + mov rbx , 5 + mov rcx , 8090 + mov rdx , 0 + mov rsi , 0 + mov rdi , 0 ; Passive mode + int 0x60 + + mov [server_socket],eax + + mov r15 , 100*30 + + server_loop: + + ; Close server port and re-open every 30 seconds + + dec r15 + jz timeoutclose + + ; + + mov rax , 5 + mov rbx , 1 + int 0x60 + + cmp [serveronoff],byte 2 + je serveroff + + ; Server status ? + + mov rax , 53 + mov rbx , 6 + mov rcx , [server_socket] + int 0x60 + + cmp rax , 4 + jne server_loop + + ; Wait 0.50 seconds + + mov rax , 5 + mov rbx , 50 + int 0x60 + + mov [picsend],byte 0 + + ; Read all data + + read_server_data: + + mov rax , 53 + mov rbx , 3 + mov rcx , [server_socket] + int 0x60 + + shl r8 , 8 + mov r8b , bl + + mov r9 , 'pmb.egam' + cmp r8 , r9 + jne nopicsend2 + mov [picsend],byte 1 + nopicsend2: + + cmp rax , 0 + jne read_server_data + + ; Wait 0.05 seconds + + mov rax , 5 + mov rbx , 5 + int 0x60 + + ; Send index htm file + + cmp [picsend],byte 0 + jne noindexsend + + mov rax , 53 + mov rbx , 7 + mov rcx , [server_socket] + mov rdx , h_i_len-html_header_index + mov rsi , html_header_index + int 0x60 + + jmp nopicsend + + noindexsend: + + ; form picture to data10+ + + mov rax , [resx] + mov [sizex],rax + mov rax , [resy] + mov [sizey],rax + call form_picture + + ; send picture - html header + + mov rax , '00230454' ; 320 + cmp [resx],dword 160 + jne nor160 + mov rax , '00057654' ; 160 + nor160: + cmp [resx],dword 640 + jne nor640 + mov rax , '00921654' ; 640 + nor640: + mov [hsz],rax + + mov rax , 53 + mov rbx , 7 + mov rcx , [server_socket] + mov rdx , h_len-html_header + mov rsi , html_header + int 0x60 + + mov rax , 105 + mov rbx , 100 + int 0x60 + + ; send picture - bmp header + + mov rax , 53 + mov rbx , 7 + mov rcx , [server_socket] + mov rdx , 54 + mov rsi , data10 + int 0x60 + + ; send picture - bmp data + + mov rsi , data10+54 + + mov r15 , 99999 + call server_stats + mov r15 , 0 + + newdatasend: + + mov rax , 53 + mov rbx , 6 + mov rcx , [server_socket] + int 0x60 + cmp rax , 4 + jne timeoutclose + + mov rax , 53 + mov rbx , 7 + mov rcx , [server_socket] + mov rdx , 160*3 + int 0x60 + + mov rax , 105 + mov rbx , 3 + int 0x60 + + ; If camera is off, display the stats + + call server_stats ; In:r15 + + add rsi , 160*3 + + mov [datasent],rsi + sub [datasent],dword data10+54 + + mov rbx , [resx_resy_3] + add rbx , data10+54 + + cmp rsi , rbx + jb newdatasend + + timeoutclose: + nopicsend: + + mov rax , 5 + mov rbx , 5 + int 0x60 + + ; close port + + mov rax , 53 + mov rbx , 8 + mov rcx , [server_socket] + int 0x60 + + mov [datasent],dword 0 + + mov r15 , 99999 + call server_stats + + ; mov rax , 5 + ; mov rbx , 50 + ; int 0x60 + + jmp server_open + + serveroff: + + ; Close port + + mov rax , 53 + mov rbx , 8 + mov rcx , [server_socket] + int 0x60 + + mov [serveronoff],byte 3 + + mov rax , 512 + int 0x60 + + +server_stats: +; +; In: r15 - counter +; + cmp [camera_state],byte 1 + je nodfps + inc r15 + cmp r15 , 75 + jb nodfps + mov [show_fps],byte 1 + mov r15 , 0 + nodfps: + + ret + + + +START: + + mov rax , 141 + mov rbx , 1 + mov rcx , 1 + mov rdx , 5 shl 32 + 5 + mov r8 , 9 shl 32 + 12 + int 0x60 + + ; 320x240 as default + + mov r12, 010b + call scan_for_configuration + mov [sconf],r12 + + call grey_default + + ; Draw window + + call draw_window + +still: + + mov rax , 123 ; Check for event + mov rbx , 1 + int 0x60 + + test rax , 0x1 ; Window redraw + jnz window_event + test rax , 0x2 ; Keyboard press + jnz key_event + test rax , 0x4 ; Button press + jnz button_event + + call check_camera_state + + call read_data + + cmp [show_fps],byte 1 + jne nosfps + call display_frames_per_second + mov [show_fps],byte 0 + nosfps: + + jmp still + + +window_event: + + call draw_window + jmp still + +key_event: + + mov rax , 0x2 ; Read the key and ignore + int 0x60 + + jmp still + +button_event: + + mov rax , 0x11 + int 0x60 + + ; rax = status + ; rbx = button id + + cmp rbx , 0x10000001 + jne no_application_terminate_button + call turn_camera_off + mov rax , 0x200 + int 0x60 + no_application_terminate_button: + + cmp rbx , 0x102 + jb no_stats + cmp rbx , 0x103 + ja no_stats + sub rbx , 0x102 + mov [sta1+1],byte ' ' + mov [sta2+1],byte ' ' + imul rbx , 14 + mov [sta1+1+rbx],byte '>' + call fps_background + call display_frames_per_second + jmp still + no_stats: + + cmp rbx , 0x109 + jne no_application_terminate_menu + call turn_camera_off + mov rax , 0x200 + int 0x60 + no_application_terminate_menu: + + cmp rbx , 0x105 + jb no_effect + cmp rbx , 0x107 + ja no_effect + sub rbx , 0x105 + mov [eo+1],byte ' ' + mov [eb+1],byte ' ' + mov [en+1],byte ' ' + imul ebx , 12 + mov [eo+1+rbx],byte '>' + jmp still + no_effect: + + cmp rbx , 121 + jb nomodechange + cmp rbx , 123 + ja nomodechange + + ; Turn camera off + + push rbx + call turn_camera_off + pop rbx + + ; Turn server off + + push rax rbx + cmp [serveronoff],byte 1 + jne noserveron2 + mov [serveronoff],byte 2 + mov rax , 5 + mov rbx , 20 + int 0x60 + call server_button + noserveron2: + pop rbx rax + + ; + + cmp rbx , 123 ; 640 & 800 + jne screenresxfine + call get_data_boot_info + cmp [data_boot_info+4*8],dword 800 + jae screenresxfine + mov rax , 4 + mov rbx , string_screen_req + mov rcx , 15+5 + mov rdx , 49+5 + mov rsi , 0xffffff + mov r9 , 1 + int 0x60 + mov rax , 5 + mov rbx , 200 + int 0x60 + call display_image_yuv + jmp still + screenresxfine: + + mov r11 , [xpos] + + sub rbx , 121 + + mov r8 , [xr+rbx*8] + mov r9 , [yr+rbx*8] + mov r10, [xp+rbx*8] + + mov r12, [cb+rbx*8] + call scan_for_configuration + + cmp r8 , [resx] ; already selected + je still + + mov [resx],r8 + mov [resy],r9 + mov [xpos],r10 + mov [sconf],r12 + + imul r8 , r9 + mov r9 , r8 + add r8 , r9 + mov [resx_resy_2],r8 + add r8 , r9 + mov [resx_resy_3],r8 + add r8 , r9 + mov [resx_resy_4],r8 + + cmp r11 , [xpos] ; redraw needed + jne redraw + mov rax , 13 + mov rbx , 15 shl 32 + 320 + mov rcx , 49 shl 32 + 240 + mov rdx , 0xffffff + int 0x60 + call display_image_yuv + mov [camera_connection_status],dword 2 + call check_camera_state + jmp still + redraw: + + mov rax , 67 + mov rbx , -1 + mov rcx , -1 + + mov rdx , [resx] + cmp rdx , 320 + jae rdxfine + mov rdx , 320 + rdxfine: + mov r8 , [resy] + cmp r8 , 240 + jae r8fine + mov r8 , 240 + r8fine: + add rdx , 160 + add r8 , 70 + + cmp r11 , [xpos] + jae noupleft + mov rbx , 0 + mov rcx , 0 + mov r8 , 561 ; 640x480 picture + noupleft: + + int 0x60 + + jmp still + + scan_for_configuration: + + mov rdx , 1 + + newconftest: + + mov rax , 128 + mov rbx , 2 + mov rcx , 1 + int 0x60 + shr rbx , 16 + and rbx , 0xff + cmp rbx , r12 + je cfound + + inc rdx + cmp rdx , 3 + jbe newconftest + + mov r12 , 0 ; conf not found + ret + + cfound: + + mov r12 , rdx ; conf found + ret + + nomodechange: + + cmp rbx , 101 + jne no_on + call turn_camera_on + jmp still + no_on: + + cmp rbx , 102 + jne no_off + mov [record_state],byte 0 + cmp [serveronoff],byte 1 + jne noserveron + mov [serveronoff],byte 2 + mov rax , 5 + mov rbx , 20 + int 0x60 + noserveron: + call turn_camera_off + call display_image_yuv + call server_button + jmp still + no_off: + + cmp rbx , 103 + jne no_snap + call save_snap + jmp still + no_snap: + + cmp rbx , 104 + jne no_clip + cmp [camera_state], byte 1 + jne still + cmp [resx],dword 320 + je resolutionfine + mov rax , 4 + mov rbx , string_resolution_320 + mov rcx , 15+5 + mov rdx , 49+5 + mov rsi , 0xffffff + mov r9 , 1 + int 0x60 + mov rax , 5 + mov rbx , 100 + int 0x60 + call display_image_yuv + jmp still + resolutionfine: + mov [record_state],byte 1 + mov [record_position], dword data10+1208 + mov rax , data10+(avi_end-avi_start) + mov [record_position],rax + jmp still + no_clip: + + cmp rbx , 105 + jne no_server + cmp [serveronoff],byte 3 + je startserver + mov [serveronoff],byte 2 + waitmore: + mov rax , 5 + mov rbx , 10 + int 0x60 + call read_data + cmp [serveronoff],byte 2 + je waitmore + call server_button + jmp still + startserver: + ; Start server thread + mov rax , 51 + mov rbx , 1 + mov rcx , server + mov rdx , server_stack + int 0x60 + mov rax , 5 + mov rbx , 10 + int 0x60 + call server_button + jmp still + no_server: + + + cmp rbx , 10000 + jb noscroll1 + cmp rbx , 11000 + ja noscroll1 + mov [scroll_value_1],rbx + call draw_scroll_1 + call draw_scroll_values + jmp still + noscroll1: + + cmp rbx , 20000 + jb noscroll2 + cmp rbx , 21000 + ja noscroll2 + mov [scroll_value_2],rbx + call draw_scroll_2 + call draw_scroll_values + jmp still + noscroll2: + + cmp rbx , 30000 + jb noscroll3 + cmp rbx , 31000 + ja noscroll3 + mov [scroll_value_3],rbx + call draw_scroll_3 + call draw_scroll_values + jmp still + noscroll3: + + jmp still + + + +grey_default: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Grey default picture +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov rdi , data6 + mov rcx , [resx] + imul rcx , [resy] + imul rcx , 4 + mov rax , 0xe0 + cld + rep stosb + + ret + + +get_data_boot_info: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Screen resolution +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + push rax rbx rcx rdx + mov rax , 26 + mov rbx , 3 + mov rcx , data_boot_info + mov rdx , 8*20 + int 0x60 + pop rdx rcx rbx rax + + ret + + + +check_camera_state: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Displays text message if camera is disconnected +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov rax , 128 + mov rbx , 1 + int 0x60 + add rax , rbx + + cmp rax , [camera_connection_status] + je no_camera_change + + mov [camera_connection_status],rax + + push rax + call grey_default + call display_image_yuv + pop rax + + cmp rax , 0 + jne camera_connected + + mov rax , 4 + mov rbx , string_camera_disconnected + mov rcx , 114 + mov rdx , 162 + mov rcx , [resx] + shr rcx , 1 + add rcx , 15 + sub rcx , 62 + mov rdx , [resy] + shr rdx , 1 + add rdx , 43 + mov rsi , 0xb8b8b8 + mov r9 , 1 + int 0x60 + + camera_connected: + + no_camera_change: + + ret + + + +fps_delay: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Waits for next time to read from device +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + fps_wait: + + mov rax , 11 + int 0x60 + cmp rax , 0 + jne fps_wait_event + + mov rax , 105 + mov rbx , 1 + int 0x60 + + mov rax , 26 + mov rbx , 1 + mov rcx , fps_data + mov rdx , 1024 + int 0x60 + + call check_framerate + + mov rax , [fps_data+384] + + cmp [thread_running],byte 0 + jne yes_fps_wait + mov [fps_add],dword 34 ; assume 30fps + jmp no_fps_wait + yes_fps_wait: + + cmp rax , [fps_next] + jb fps_wait + + no_fps_wait: + + add rax , [fps_add] + mov [fps_next],rax + + no_fps_add: + + fps_wait_event: + + ret + + + +check_framerate: + + ; Display FPS and adjust display rate delay + + mov rax , [fps_data+384] + cmp rax , [fps_n] + jb nofps + add rax , 1000 + mov [fps_n],rax + ; + cmp [frames_per_second],dword 5 + jae nofrpsz + mov [frames_per_second],dword 5 + nofrpsz: + cmp [frames_per_second],dword 30 + jbe nofrpst + mov [frames_per_second],dword 30 + nofrpst: + call display_frames_per_second + mov rax , 1000 + xor rdx , rdx + mov rbx , [frames_per_second] + div rbx + ; + cmp rax , [fps_add] + jae nofaster + inc dword [fastercount] + cmp [fastercount],dword 2 + jb nofasterset + mov [frames_per_second],dword 30 + mov rax , 1000/30 + nofaster: + mov [fastercount],dword 0 + nofasterset: + ; + mov [fps_add],rax + mov [frames_per_second],dword 0 + mov [frames_per_second_missed],dword 0 + nofps: + + ret + + + +display_frames_per_second: + + cmp [sta2+1],byte '>' + jne nodispstats + + fpsy equ 24 + + call fps_background + ; + mov rax , 47 + mov rbx , 6 * 65536 + mov rcx , [datasent] + mov rdx , [fpsx] + add rdx , 2+6*5 + shl rdx , 32 + add rdx , fpsy+4 + mov rsi , 0xb0b0b0 + int 0x60 + ; + mov rax , 47 + mov rbx , 2 * 65536 + mov rcx , [frames_per_second] + sub rcx , [frames_per_second_missed] + mov rdx , [fpsx] + add rdx , 2+6*16 + shl rdx , 32 + add rdx , fpsy+4 + mov rsi , 0xb0b0b0 + int 0x60 + mov rax , 47 + mov rbx , 2 * 65536 + mov rcx , [frames_per_second] + mov rdx , (fpsx+2+19*6) shl 32 + fpsy+4 + mov rdx , [fpsx] + add rdx , 2+19*6 + shl rdx , 32 + add rdx , fpsy+4 + mov rsi , 0xb0b0b0 + int 0x60 + mov rax , 0x4 + mov rbx , string_fps + mov rcx , [fpsx] + add rcx , 2 + mov rdx , fpsy+4 + mov rsi , 0xb0b0b0 + mov r9 , 1 + int 0x60 + + nodispstats: + + ret + + fps_background: + + mov rax , [xpos] + sub rax , 8 + mov [fpsx],rax + + mov rax , 13 + mov rbx , [fpsx] + sub rbx , 3 + shl rbx , 32 + add rbx , 22*6+5 + mov rcx , fpsy shl 32 + 14 + mov rdx , 0xe8e8e8 + int 0x60 + + ret + + + + +read_block: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Starts the read thread +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + cmp [thread_running],byte 0 + jne nostartthread + + ; Start thread + + mov [thread_running],byte 1 + + mov rax , 51 + mov rbx , 1 + mov rcx , read_thread + mov rdx , thread_stack + int 0x60 + + mov rax , 5 + mov rbx , 20 + int 0x60 + + nostartthread: + + ret + + +read_thread: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Read data block in a separate thread. +; Doesn't block main process. +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + newth: + + inc dword [threadpos] + and dword [threadpos],dword 3 + + mov rax , 128 + mov rbx , 5 + mov rcx , 1 + + mov rdx , [threadpos] + imul rdx , 0x100000*7 + add rdx , data8 + + mov r8 , [threadpos] + imul r8 , 0x100000 + add r8 , data9 + + mov r9 , 256 + + int 0x60 + + cmp [camera_state],byte 1 + je newth + + mov [thread_running],byte 0 + + mov rax , 512 + int 0x60 + + + + +read_data: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Reads and analyzes data blocks from device +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + ; + ; Camera enabled ? + ; + + cmp [camera_state],byte 1 + je continue_read + ret + continue_read: + + ; + ; Start thread + ; + + call read_block + + mov rcx , [threadposprev] + waitforread: + mov rax , 105 + mov rbx , 1 + int 0x60 + cmp rcx , [threadpos] + je waitforread + + mov rcx , [threadpos] + mov [threadposprev],rcx + + mov rdx , [threadpos] + dec rdx + and rdx , 0x3 + imul rdx , 0x100000*7 + add rdx , data8 + + mov r8 , [threadpos] + dec r8 + and r8 , 0x3 + + imul r8 , 0x100000 + add r8 , data9 + + mov [pdata82],rdx ; data - 1024*3 4k aligned + mov [pdata92],r8 ; length - qword + + ; + ; Analyze + ; + + ; + ; Arrange data to data1+ for faster cache access + ; + + mov rsi , [pdata82] + mov rdi , data1 + newarr: + xor rax , rax + mov al , [rsi] + xor rbx , rbx + mov ebx , [rsi+rax-6] + mov [rdi],rbx + add rsi , 1024*3 + add rdi , 8 + cmp rdi , data1+8*256*8 + jbe newarr + + ; + ; Timestamp order + ; + + mov r12 , data4 ; data position + mov r10 , data5 ; length position + + newdataorder2: + + ; Search for lowest timestamp count + + mov rax , 0xfffffffff ; timestamp + + mov r11 , data1 + mov r15 , data1 + 8*256*8 + + lowsearch2: + + ; Timestamp position + + cmp [r11+7],byte 1 ; used ? + je nolowfound2 + cmp eax , [r11] ; smaller ? + jb nolowfound2 + + mov r14 , r11 ; save position + mov eax , [r11] ; save packet num + + nolowfound2: + + add r11 , 8 + + cmp r11 , r15 + jbe lowsearch2 + + mov r13 , 0xfffffffff + cmp rax , r13 + jae dataintimeorder2 + + mov rdx , r14 + sub rdx , data1 + + mov rbx , rdx + add rbx , [pdata92] + mov [r10],rbx ; save length position to line + add r10 , 8 + + imul rdx , 1024*3/8 + add rdx , [pdata82] + mov [r12], rdx ; save data position to line + add r12 , 8 + + mov [r14+7],byte 1 + + jmp newdataorder2 + + dataintimeorder2: + + markdone: + + ; Mark end of list + + mov [r12+00],dword 0xfffffff + mov [r12+08],dword 0xfffffff + mov [r12+16],dword 0xfffffff + mov [r12+24],dword 0xfffffff + + ; + ; Display frames in sent data + ; + + mov r12 , data4 + call display_frame_yuv + call record_picture + + mov r15 , 0 + yesnewframe: + push r15 + mov r12 , [framebegin] + add r12 , 8 + call display_frame_yuv + call record_picture + pop r15 + inc r15 + cmp r15 , 50 + ja nonewframes + cmp rsi , 0 + je yesnewframe + nonewframes: + + inc dword [frames_per_second] + inc dword [frames_per_second_missed] + + ret + + + +display_number: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Displays scroll values +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + push rax rbx rcx rdx rsi + + push rcx rdx + mov rax , 13 + mov rbx , rdx + sub rbx , 2 + mov rcx , rdx + sub rcx , 2 + mov bx , 6*3 + shl rcx , 32 + add rcx , 11 + mov rdx , 0xffffff + int 0x60 + pop rdx rcx + + mov rax , 47 + mov rbx , 3 * 65536 + 0*256 + mov rsi , 0x000000 + int 0x60 + + pop rsi rdx rcx rbx rax + + ret + + +get_frame_size: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Counts the number of bytes in frame +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov rax , 0 + + mov r12 , [framebegin] + + mov rsi , [r12] + + cmp rsi , 0xfffffff + jae cfrl2 + + ; rsi = data area + + mov rcx , [rsi+1] + and rcx , 1 + + mov r10 , r12 + add r10 , data5 + sub r10 , data4 + mov r10 , [r10] + + ; r10 = data count area + + movzx rax , word [r10] + and rax , 0xfff + + movzx rbx , byte [rsi] + and rbx , 0x7f + sub rax , rbx + + cfrl1: + + add r12 , 8 + + mov rsi , [r12] + cmp rsi , 0xfffffff + jae cfrl2 + + ; rsi = data area + + mov rdx , [rsi+1] + and rdx , 1 + + ; last block found -> exit + + cmp rcx , rdx + jne cfrl2 + + mov r10 , r12 + add r10 , data5 + sub r10 , data4 + mov r10 , [r10] + + ; r10 = data count area + + movzx rbx , word [r10] + and rbx , 0xfff + + movzx r8 , byte [rsi] + and r8 , 0x7f + + cmp rbx , r8 + jbe cfrl1 + + add rax , rbx + sub rax , r8 + + jmp cfrl1 + + cfrl2: + + ret + + + +separate_data: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Separates picture data from received packets +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov r14 , [framebegin] + + mov rdi , data3 + + testnewline: + + mov r10 , [r14] ; data content position + + mov rsi , r14 + add rsi , data5 + sub rsi , data4 + mov rsi , [rsi] ; data length position + + cmp [r14], dword 0xfffffff + je nothisdata + cmp r14 , data4 + 8*256*8 + jae nothisdata + + mov rcx , [rsi] + and rcx , 0xfff + + movzx rdx , byte [r10] + and rdx , 0x7f + + cmp rcx , rdx + jbe nothisc + + mov rsi , r10 + add rsi , rdx + + sub rcx , rdx + and rcx , 4096-1 + + cld + rep movsb + + mov rcx , [resx_resy_2] + add rcx , data3 + + cmp rdi , rcx + ja nothisdata + + nothisc: + + add r14 , 8 + + jmp testnewline + + nothisdata: + + ret + + + +display_frame_yuv: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Displays wanted frame at data from video device +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + ; + ; Search for beginning of frame + ; + + mov [framebegin],dword data4 + + jmp frbl32 + + newframesearch2: + + mov rsi , [r12] + + cmp rsi , 0xfffffff + jae frbl312 + + mov rcx , [rsi+1] + and rcx , 1 + + frbl12: + + add r12 , 8 + mov rsi , [r12] + + cmp rsi , 0xfffffff + jae frbl312 + + mov rdx , [rsi+1] + and rdx , 1 + + cmp rdx , rcx + je frbl12 + + frbl32: + + mov [framebegin],r12 + + ; + ; Check framesize + ; + + call get_frame_size + cmp rax , [resx_resy_2] + je framesizefine + + ; If framesize if not acceptable, search for next frame + + mov r12 , [framebegin] + add r12 , 8 + jmp newframesearch2 + + framesizefine: + + jmp displayframe + + ; + + frbl312: + + mov rsi , 1 ; no more frames + ret + + displayframe: + + mov r12 , [framebegin] + mov [found_frame],r12 + + ; + + call separate_data + + ; + ; Form picture YUV -> RGB + ; + + mov rsi , data3 + + mov rdi , data6 + mov r15 , [resx_resy_4] + add r15 , data6 + + npixell1: + + ; Effect: none + + cmp [eo+1],byte '>' + jne noeffectoff + movzx r8 , byte [rsi] + movzx r9 , byte [rsi+1] + movzx r10 , byte [rsi+3] + call calculate_yuv + mov [rdi+0],edx + movzx r8 , byte [rsi+2] + movzx r9 , byte [rsi+1] + movzx r10 , byte [rsi+3] + call calculate_yuv + mov [rdi+4],edx + jmp pixelsdone + noeffectoff: + + ; Effect: Blur + + cmp [eb+1],byte '>' + jne noeffectblur + movzx r8 , byte [rsi] + movzx r9 , byte [rsi+1] + movzx r10 , byte [rsi+3] + call calculate_yuv + shr edx , 1 + and edx , 0x7f7f7f + shr dword [rdi],byte 1 + and dword [rdi],dword 0x7f7f7f + add [rdi],edx + movzx r8 , byte [rsi+2] + movzx r9 , byte [rsi+1] + movzx r10 , byte [rsi+3] + call calculate_yuv + shr edx , 1 + and edx , 0x7f7f7f + shr dword [rdi+4],byte 1 + and dword [rdi+4],dword 0x7f7f7f + add [rdi+4],edx + jmp pixelsdone + noeffectblur: + + ; Effect: Negative + + cmp [en+1],byte '>' + jne noeffectnegative + movzx r8 , byte [rsi] + movzx r9 , byte [rsi+1] + movzx r10 , byte [rsi+3] + call calculate_yuv + not edx + mov [rdi+0],edx + movzx r8 , byte [rsi+2] + movzx r9 , byte [rsi+1] + movzx r10 , byte [rsi+3] + call calculate_yuv + not edx + mov [rdi+4],edx + jmp pixelsdone + noeffectnegative: + + pixelsdone: + + add rdi , 8 + + add rsi , 4 + + cmp rdi , r15 + jbe npixell1 + + call fps_delay + + call display_image_yuv + + display_exit: + + inc dword [frames_per_second] + + mov rsi , 0 + ret + + + + +display_image_yuv: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Displays image +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov rax , 7 + mov rbx , 15 shl 32 + mov rcx , (49) shl 32 + add rbx , [resx] + add rcx , [resy] + mov rdx , data6 + mov r8 , 0 + mov r9 , 0x1000000 + mov r10 , 4 + int 0x60 + + ret + + +calculate_yuv: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Calculates RGB from YUV +; +; In: r8,r9,r10 - YUV +; +; Out: rdx - RGB +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + push rbx rcx r11 + + mov rcx , r8 + sub rcx , 16 ; ?! + mov rdx , r9 + sub rdx , 128 + mov r8 , r10 + sub r8 , 128 + + ; For all components + + imul rcx , 298 + + ; + + mov r9 , 0 ; limit low + mov r10 , 255 ; limit high + + ; Red + + push rcx r8 + + imul r8 , 409 + + add rcx , r8 + add rcx , 128 + shr rcx , 8 + + imul rcx , [scroll_value_1_multiply] + shr rcx , 7 + + cmp rcx , 0xfffffff + cmovae rcx , r9 + cmp rcx , r10 + cmova rcx , r10 + + mov r11 , rcx + + pop r8 rcx + + ; Green + + push rcx rdx + + imul rdx , 100 + imul r8 , 208 + + sub rcx , rdx + sub rcx , r8 + add rcx , 128 + shr rcx , 8 + + imul rcx , [scroll_value_2_multiply] + shr rcx , 7 + + cmp rcx , 0xfffffff + cmovae rcx , r9 + cmp rcx , r10 + cmova rcx , r10 + + shl r11 , 8 + mov r11b , cl + + pop rdx rcx + + ; Blue + + imul rdx , 516 + + add rcx , rdx + add rcx , 128 + shr rcx , 8 + + imul rcx , [scroll_value_3_multiply] + shr rcx , 7 + + cmp rcx , 0xfffffff + cmovae rcx , r9 + cmp rcx , r10 + cmova rcx , r10 + + shl r11 , 8 + mov r11b , cl + + mov rdx , r11 + + pop r11 rcx rbx + + ret + + + +acalculate_yuv: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; YUV to RGB +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + push rax rbx rcx r8 + + mov rcx , r8 + sub rcx , 16 + mov rdx , r9 + sub rdx , 128 + mov r8 , r10 + sub r8 , 128 + + ; Red + + push rcx rdx r8 + + imul rcx , 298 + imul r8 , 409 + + add rcx , r8 + add rcx , 128 + shr rcx , 8 + + imul rcx , [scroll_value_1_multiply] + shr rcx , 7 + + cmp rcx , 0xfffffff + jb norcxzero1 + mov rcx , 0 + norcxzero1: + cmp rcx , 255 + jbe rcxfine + mov rcx , 255 + rcxfine: + mov [red],cl + + pop r8 rdx rcx + + ; Green + + push rcx rdx r8 + + imul rcx , 298 + imul rdx , 100 + imul r8 , 208 + + sub rcx , rdx + sub rcx , r8 + add rcx , 128 + shr rcx , 8 + + imul rcx , [scroll_value_2_multiply] + shr rcx , 7 + + cmp rcx , 0xfffffff + jb norcxzero2 + mov rcx , 0 + norcxzero2: + cmp rcx , 255 + jbe rcxfine2 + mov rcx , 255 + rcxfine2: + mov [green],cl + + pop r8 rdx rcx + + ; Blue + + push rcx rdx r8 + + imul rcx , 298 + imul rdx , 516 + add rcx , rdx + add rcx , 128 + shr rcx , 8 + + imul rcx , [scroll_value_3_multiply] + shr rcx , 7 + + cmp rcx , 0xfffffff + jb norcxzero3 + mov rcx , 0 + norcxzero3: + cmp rcx , 255 + jbe rcxfine3 + mov rcx , 255 + rcxfine3: + mov [blue],cl + + pop r8 rdx rcx + + ; + + mov rdx , [red] + shl rdx , 8 + add rdx , [green] + shl rdx , 8 + add rdx , [blue] + + pop r8 rcx rbx rax + + ret + + +form_picture: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Forms BMP picture to data10+ +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + ; Header + + mov rsi , bmpheader + mov rdi , data10 + mov rcx , 54 + cld + rep movsb + + mov rax , [sizex] + mov [data10+0x12],eax + + mov rbx , [sizey] + mov [data10+0x16],ebx + + ; Picture data + + mov rdi , data10+54 + mov rsi , [sizex] + imul rsi , [sizey] + imul rsi , 4 + add rsi , data6 + mov rcx , 0 + newpicdata: + + sub rsi , [sizex] + sub rsi , [sizex] + sub rsi , [sizex] + sub rsi , [sizex] + + push rcx rsi + mov rcx , [sizex] + datamovel1: + mov eax , [rsi] + mov [rdi],eax + add rsi , 4 + add rdi , 3 + loop datamovel1 + pop rsi rcx + + inc rcx + cmp rcx , [sizey] + jb newpicdata + + ret + + +save_snap: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Saves BMP snap +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + push qword [camera_state] + + mov rax , 5 + mov rbx , 10 + int 0x60 + + call turn_camera_off + + ; Saving BMP text + + mov rbx , textsaving2 + call display_text + + mov rax , [resx] + mov [sizex],rax + mov rax , [resy] + mov [sizey],rax + + ; Form picture to data10+ + + call form_picture + + ; Snap count + + mov rax , [snapcount] + xor rdx , rdx + mov rbx , 10 + div rbx + mov [filesave+12],dl + mov [filesave+11],al + add [filesave+11],word '00' + + ; Delete file if persent + + mov rax , 58 + mov rbx , 2 + mov r9 , filesave + int 0x60 + + ; Save file + + mov rax , 58 + mov rbx , 1 + mov rcx , 0 + mov rdx , [sizex] + imul rdx , [sizey] + imul rdx , 3 + add rdx , 54 + mov r8 , data10 + mov r9 , filesave + int 0x60 + + ; Increase snap counter + + inc dword [snapcount] + + ; Draw button + + call draw_snap_button + + ; Draw image + + call display_image_yuv + + pop rax + cmp rax , 1 + jne noturnbackon + mov rax , 5 + mov rbx , 10 + int 0x60 + call turn_camera_on + noturnbackon: + + ret + + +display_text: + + mov rax , 0x4 + mov rcx , 20 + mov rdx , 54 + mov rsi , 0xffffff + mov r9 , 0x1 + int 0x60 + + ret + + + +record_picture: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Records picture for AVI +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + cmp [record_state],byte 1 + jne recl2 + + ; 10 fps + + mov rbx , textrec + call display_text + + mov rax , 26 + mov rbx , 1 + mov rcx , fps_data + mov rdx , 1024 + int 0x60 + mov rax , [fps_data+384] + cmp rax , [record_next] + jb recl2 + add rax , 100 + mov [record_next],rax + + ; All recorded ? + + mov rax , [resx_resy_4] + add rax , 4*2 + imul rax , 50 + add rax , data10+(avi_end-avi_start) + + cmp [record_position], rax + jb recfine + mov [record_state],byte 0 + + call display_image_yuv + + ; Saving text + + mov rbx , textsaving + call display_text + + call save_clip + + call display_image_yuv + + ret + recfine: + + call display_image_yuv + + mov rax , [record_position] + sub rax , data10 + xor rdx , rdx + mov rbx , [resx_resy_4] + imul rbx , 10 + div rbx + add rax , 48+1 + mov [textrec+5],al + + mov rbx , textrec + call display_text + + mov rdi , [record_position] + mov [rdi], dword '00db' + + mov rsi, [resx_resy_4] + + mov [rdi+4], esi + + add rdi , 8 + mov rsi , data6 + add rsi , [resx_resy_4] + sub rsi , [resx] + sub rsi , [resx] + sub rsi , [resx] + sub rsi , [resx] + recl1: + + push rsi rdi + mov rcx , [resx] + shl rcx , 2 + cld + rep movsb + pop rdi rsi + + add rdi , [resx] + add rdi , [resx] + add rdi , [resx] + add rdi , [resx] + + sub rsi , [resx] + sub rsi , [resx] + sub rsi , [resx] + sub rsi , [resx] + + cmp rsi , data6 + jae recl1 + + mov rsi , [resx_resy_4] + add rsi , 8 + + add [record_position],esi + + recl2: + + ret + + +save_clip: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Saves AVI clip +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + push qword [camera_state] + + mov rax , 5 + mov rbx , 10 + int 0x60 + + call turn_camera_off + + ; Header + + mov rsi , avi_start + mov rdi , data10 + mov rcx , avi_end-avi_start + cld + rep movsb + + ; idx1 + + mov rsi , idx1_start + mov rdi , data10 + (avi_end-avi_start) + ((4*2+320*240*4)*50) + mov rcx , idx1_end-idx1_start + cld + rep movsb + + ; Filecount + + mov rax , [clipcount] + xor rdx , rdx + mov rbx , 10 + div rbx + mov [filesaveavi+12],dl + mov [filesaveavi+11],al + add [filesaveavi+11],word '00' + + ; Delete file if persent + + mov rax , 58 + mov rbx , 2 + mov r9 , filesaveavi + int 0x60 + + ; Save file + + mov rax , 58 + mov rbx , 1 + mov rcx , 0 + mov rdx , (avi_end-avi_start)+(4*2+320*240*4)*50+(idx1_end-idx1_start) + mov r8 , data10 + mov r9 , filesaveavi + int 0x60 + + ; Increase snap counter + + inc dword [clipcount] + + ; Draw button + + call draw_clip_button + + pop rax + cmp rax , 1 + jne noturnbackonavi + mov rax , 5 + mov rbx , 10 + int 0x60 + call turn_camera_on + noturnbackonavi: + + ret + + + +draw_window: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Draws window +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov rax , 0xC ; Beginning of window draw + mov rbx , 0x1 + int 0x60 + + ; Draw window + + mov rax , 0x0 + mov rbx , 150 shl 32 + 480 + mov rcx , 80 shl 32 + 310 + mov rdx , 0x0000000000FFFFFF + mov r8 , 0x0000000000000001 + mov r9 , window_label + mov r10 , menu_struct + int 0x60 + + ; Start camera button + + mov rax , 8 + mov rbx , [xpos] + shl rbx , 32 + add rbx , 116 + mov rcx , (247+21-21) shl 32 + 21 + mov rdx , 101 + mov r8 , 0 + mov r9 , string_start_camera + int 0x60 + + ; Stop camera button + + mov rax , 8 + mov rbx , [xpos] + shl rbx , 32 + add rbx , 116 + mov rcx , (247+21+21-21) shl 32 + 21 + mov rdx , 102 + mov r8 , 0 + mov r9 , string_stop_camera + int 0x60 + + ; Server button + + call server_button + + ; Snap picture button + + call draw_snap_button + + ; Clip button + + call draw_clip_button + + ; Resolution buttons + + call resolution_buttons + + ; Display image + + call display_image_yuv + + ; Display text + + mov rax , 0x4 + mov rbx , text + mov rcx , [xpos] + add rcx , 4+scx-6 + mov rdx , 132 + mov rsi , 0x0 + mov r9 , 0x1 + newline: + int 0x60 + add rbx , 0x1F + add rdx , 13-2 + cmp [rbx],byte 'x' + jne newline + + ; Scrolls + + call draw_scroll_1 + call draw_scroll_2 + call draw_scroll_3 + call draw_scroll_values + + ; Camera status + + mov [camera_connection_status],dword 2 + call check_camera_state + + ; FPS + + call display_frames_per_second + + mov rax , 0xC + mov rbx , 0x2 + int 0x60 + + ret + + +server_button: + + ; Server button + + mov rax , 8 + mov rbx , [xpos] + shl rbx , 32 + add rbx , 116 + mov rcx , (173-20+4+b3y) shl 32 + bys + mov rdx , 105 + mov r8 , 0 + mov r9 , string_server_off + cmp [serveronoff],byte 3 + je serverl1 + mov r9 , string_server_on + serverl1: + int 0x60 + + ret + + +resolution_buttons: + + ; Resolution buttons + + mov rax , 8 + mov rbx , [xpos] ; shl 32 + 116/3+1 + shl rbx , 32 + add rbx , 116/3+1 + mov rcx , rby ; 236-20-2) shl 32 + bys + mov rdx , 121 + mov r8 , 0 + mov r9 , string_res_160 + int 0x60 + + mov rax , 8 + mov rbx , [xpos] + add rbx , 116/3+1 + shl rbx , 32 + add rbx , 116/3 + mov rcx , rby ; (236-20-2) shl 32 + bys + mov rdx , 122 + mov r8 , 0 + mov r9 , string_res_320 + int 0x60 + + mov rax , 8 + mov rbx , [xpos] + add rbx , 116/3*2+1 + shl rbx , 32 + add rbx , 116/3+1 + mov rcx , rby ; (236-20-2) shl 32 + bys + mov rdx , 123 + mov r8 , 0 + mov r9 , string_res_640 + int 0x60 + + ret + + +draw_snap_button: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Draws snap button +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + ; Snap count + + mov rax , [snapcount] + xor rdx , rdx + mov rbx , 10 + div rbx + mov [string_snap_save+12],dl + mov [string_snap_save+11],al + add [string_snap_save+11],word '00' + + ; Save snap button + + mov rax , 8 + mov rbx , [xpos] + shl rbx , 32 + add rbx , 116 + mov rcx , (194-18+2+b3y) shl 32 + bys + mov rdx , 103 + mov r8 , 0 + mov r9 , string_snap_save + int 0x60 + + ret + + +draw_clip_button: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Draws video clip button +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + ; Clip count + + mov rax , [clipcount] + xor rdx , rdx + mov rbx , 10 + div rbx + mov [string_clip_save+12],dl + mov [string_clip_save+11],al + add [string_clip_save+11],word '00' + + ; Save clip button + + mov rax , 8 + mov rbx , [xpos] + shl rbx , 32 + add rbx , 116 + mov rcx , (215-16+b3y) shl 32 + bys + mov rdx , 104 + mov r8 , 0 + mov r9 , string_clip_save + int 0x60 + + ret + + +draw_scroll_values: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Draws scroll RGB values +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov rbx , [scroll_value_1] + sub rbx , 10000 + mov rcx , 200 + sub rcx , rbx + call get_multiplier + mov [scroll_value_1_multiply], r8 + mov rdx , [xpos] + add rdx , 4+scx + shl rdx , 32 + add rdx , 140-14+6+scl + call display_number + + mov rbx , [scroll_value_2] + sub rbx , 20000 + mov rcx , 200 + sub rcx , rbx + call get_multiplier + mov [scroll_value_2_multiply], r8 + mov rdx , [xpos] + add rdx , 4+7*6+scx + shl rdx , 32 + add rdx , 140-14+6+scl + call display_number + + mov rbx , [scroll_value_3] + sub rbx , 30000 + mov rcx , 200 + sub rcx , rbx + call get_multiplier + mov [scroll_value_3_multiply], r8 + mov rdx , [xpos] + add rdx , 4+14*6+scx + shl rdx , 32 + add rdx , 140-14+6+scl + call display_number + + ret + + +get_multiplier: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Multiplier for colour values +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + push rax rbx rcx rdx + + shl rcx , 7 + mov rax , rcx + xor rdx , rdx + mov rbx , 100 + div rbx + mov r8 , rax + + pop rdx rcx rbx rax + + ret + + +draw_scroll_1: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Scroll 1 +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov rax , 113 + mov rbx , 1 + mov rcx , 10000 + mov rdx , 201 + mov r8 ,[scroll_value_1] + mov r9 , [xpos] + add r9 , 7+scx + mov r10 , 50 + mov r11 , 80-12+6+scl + int 0x60 + + ret + + +draw_scroll_2: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Scroll 2 +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov rax , 113 + mov rbx , 1 + mov rcx , 20000 + mov rdx , 201 + mov r8 ,[scroll_value_2] + mov r9 , [xpos] + add r9 , 7+7*6+scx + mov r10 , 50 + mov r11 , 80-12+6+scl + int 0x60 + + ret + + +draw_scroll_3: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Scroll 3 +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + mov rax , 113 + mov rbx , 1 + mov rcx , 30000 + mov rdx , 201 + mov r8 ,[scroll_value_3] + mov r9 , [xpos] + add r9 , 7+14*6+scx + mov r10 , 50 + mov r11 , 80-12+6+scl + int 0x60 + + ret + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Data area +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +scroll_value_1: dq 10100 +scroll_value_2: dq 20100 +scroll_value_3: dq 30100 + +scroll_value_1_multiply: dq 10100 +scroll_value_2_multiply: dq 20100 +scroll_value_3_multiply: dq 30100 + +text: + + db ' xxx% xxx% xxx% ',0 + db ' Red Green Blue ',0 + db 'x' + +string_res_160: db '160',0 +string_res_320: db '320',0 +string_res_640: db '640',0 + +picsend: dq 0x0 +show_fps: dq 0x0 +fastercount: dq 0x0 + +string_start_camera: db 'START',0 +string_stop_camera: db 'STOP',0 +string_snap_save: db '/USB/1/SNAPXX.BMP',0 +string_clip_save: db '/USB/1/CLIPXX.AVI',0 + +string_server_off: db 'SERVER: OFF',0 +string_server_on: db 'PORT 8090 OPEN',0 +string_resolution_320: db '320x240 required.',0 +string_fps: db 'Sent: FPS: / ',0 +string_screen_req: db '800x600 screen resolution required.',0 + + +string_camera_disconnected: + + db 'Camera disconnected.',0 + +read_wait: dq 0x0 + +pdata82: dq data8 +pdata92: dq data9 + +scanstart: dq 0x0 +threadpos: dq 0x0 +fps_n: dq 0x0 + +threadposprev: dq 0x0 +frames_per_second: dq 0x0 + +fpsx: dq 0x0 +record_next: dq 0x0 + +camera_connection_status: dq 0x2 +frames_per_second_missed: dq 0x0 + +xr: dq 160,320,640 +yr: dq 120,240,480 +xp: dq 346,346,666 +cb: dq 001b,010b,100b + +serveronoff: dq 3 ; 1=on-2=closing-3=closed + +server_socket: dq 0x0 + +resx: dq 320 +resy: dq 240 +xpos: dq 346 + +resx_resy_2: dq 320*240*2 +resx_resy_3: dq 320*240*3 +resx_resy_4: dq 320*240*4 + +sconf: dq 0x0 +sizex: dq 0x0 +sizey: dq 0x0 + +filesaveavi: db '/usb/1/clipxx.avi',0 +record_state: dq 0x0 +clipcount: dq 0x0 +filesave: db '/usb/1/snapxx.bmp',0 +snapcount: dq 0x0 + +textrec: db 'REC (1/5s)',0 +textsaving: db 'Saving AVI-file, which might take a minute...',0 +textsaving2: db 'Saving BMP-file...',0 + +record_position: dq data10 + 1208 + +red: dq 0x0 +green: dq 0x0 +blue: dq 0x0 + +framebegin: dq 0x0 +found_frame: dq 0x0 + +framestart: dq 0x0 +framenumber: dq 0x0 +timedifference: dq 0x0 +headerstart: dq 0x0 +next_update: dq 0x0 +thread_running: dq 0x0 +read_position: dq 0x0 + +pre_read_block: dq 0x1 +analyze_block: dq 0x0 +analyze_block_position: dq 0x0 + +readon: dq 0x1 +camera_state: dq 0x0 + +tsc_base: dq 0x0 +fps_next: dq 0x0 +fps_add: dq 34 ; 30fps +tsc_next: dq 0x0 + +color: dq 0x0 +ypos: dq 0x0 +maxcount: dq 0x0 +framec: dq 0x0 +datapos: dq 0x0 +savecount: dq 0x0 + +framecount: dq 0x0 +currentframe: dq 0x0 +bytesperframe: dq 0x0 +jpgheaders: dq 0x0 +jpgheadersmem: dq 0x0 +bytesperframejpg: dq 0x0 +bytespersecond: dq 0x0 +framesinsample: dq 0x0 + +data_amount: dq 0x0 +data_valid: dq 0x0 +data_pre: dq 0x0 +data_unavailable: dq 0x0 +datasent: dq 0x0 + +window_label: + + db 'WEBCAM',0 ; Window label + +menu_struct: ; Menu Struct + + dq 0 ; Version + + dq 0x100 ; Start value of ID to return ( ID + Line ) + ; Returned when menu closes and + ; user made no selections. + + db 0,'SETUP',0 + +sta1: db 1,'> Stats Off ',0 +sta2: db 1,' Stats On ',0 + + db 1,'-',0 + +eo: db 1,'> Normal ',0 +eb: db 1,' Blur ',0 +en: db 1,' Negative',0 + + db 1,'-',0 + + db 1,'Quit',0 + + db 255 ; End of Menu Struct + + +html_header_index: + + db 'HTTP/1.1 200 OK',13,10 + db 'Server: Menuet',13,10 + db 'Connection: close',13,10 + db 'Content-Length: 47',13,10 + db 'Content-Type: text/html',13,10 + db 13,10 + db '',13,10 + +h_i_len: + + + +html_header: + + db 'HTTP/1.1 200 OK',13,10 + db 'Server: Menuet',13,10 + db 'Connection: close',13,10 + db 'Content-Length: ' +hsz: db '00230454' + db 13,10 + db 'Content-Type: image/bmp',13,10,13,10 + +h_len: + + +bmpheader: + + db 66 + db 77 + db 54 + db 12 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 54 + db 0 + db 0 + db 0 + db 40 + db 0 + db 0 + db 0 + db 32 ; x + db 0 + db 0 + db 0 + db 32 ; y + db 0 + db 0 + db 0 + db 1 + db 0 + db 24 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 12 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + db 0 + +numframes equ 50 + +avi_start: + + db 'RIFF' + dd 15361432-8 + + db 'AVI ' + + db 'LIST' + dd l4_end-l4 + l4: + db 'hdrl' + dd 'avih' + dd 0x38 + dd 100000 ; microseconds between frames + dd 0x320000 ; maxbytespersec + dd 0x200 ; paddinggranularity + dd 0x810 ; flags + dd numframes ; total frames + dd 0x00 ; zero for non-interleaved + dd 0x01 ; number of streams + dd 330*240*4 ; suggested buffer size + dd 320 ; image size x + dd 240 ; image size y + dd 0,0,0,0 + + db 'LIST' + dd l6_end-l6 + l6: + db 'strl' + db 'strh' + dd 0x38 + db 'vids' + db 'DIB ' ; handler + dd 0x0 ; flags + dd 0x0 ; priority and language + dd 0x0 ; initial frames + dd 01000000 ; scale + dd 10000000 ; rate + dd 0x0 ; start + dd numframes ; number of frames + dd 320*240*4 ; 0x4b008 ; suggested buffer size + dd 0x0 ; quality + dd 4 ; sample size + dd 0x0 ; rect struct + dd 0x0 + + db 'strf' + dd 0x28 ; length + dd 0x28 ; length II + dd 320 ; width + dd 240 ; height + dd 0x200001 ; planes and bitcount + dd 0x0 ; compression + dd 320*240*4 ; image size + dd 0x0 ; xpelspermeter + dd 0x0 ; ypelspermeter + dd 0x0 ; clrused + dd 0x0 ; clrimportant + + l4_end: + l6_end: + + db 'LIST' + dd 4+(2*4+320*240*4)*50 + l5: + db 'movi' + +avi_end: + +idx1_start: + + db 'idx1' + dd indx12-indx11 + indx11: + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*0 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*1 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*2 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*3 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*4 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*5 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*6 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*7 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*8 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*9 + dd 320*240*4 + + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*10 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*11 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*12 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*13 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*14 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*15 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*16 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*17 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*18 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*19 + dd 320*240*4 + + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*20 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*21 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*22 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*23 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*24 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*25 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*26 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*27 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*28 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*29 + dd 320*240*4 + + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*30 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*31 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*32 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*33 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*34 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*35 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*36 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*37 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*38 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*39 + dd 320*240*4 + + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*40 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*41 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*42 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*43 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*44 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*45 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*46 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*47 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*48 + dd 320*240*4 + db '00db' + dd 16 + dd 0x4+(320*240*4+8)*49 + dd 320*240*4 + + indx12: + +idx1_end: + + +data_boot_info: times 8*30 db ? + + +fps_data: + + times 2048 db ? + + ; + + times 1024 db ? ; Stack server + +server_stack: + + times 1024 db ? ; Stack read + +thread_stack: + + times 1024 db ? ; Stack main + +image_end: + + + + + + + + + \ No newline at end of file