forked from KolibriOS/kolibrios
63cf01e274
git-svn-id: svn://kolibrios.org@1863 a494cfbc-eb01-0410-851d-a64ba20cac60
1838 lines
30 KiB
NASM
1838 lines
30 KiB
NASM
; 15/III 2010 staper@inbox.ru
|
||
|
||
appname equ '<27>à®£à ¬¬¨àã¥¬ë© ¬¨ªà®ª «ìªã«ïâ®à '
|
||
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 - ¦ â <20>
|
||
;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],"<22>ƒ‘’"
|
||
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],"<22><>ƒŒ"
|
||
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],"<22>ƒ‘’"
|
||
je .rg
|
||
cmp dword [esi],"<22><>ƒŒ"
|
||
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],"<22>ƒ‘’"
|
||
je .rg
|
||
cmp dword [esi],"<22><>ƒŒ"
|
||
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],"<22><>ƒŒ"
|
||
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],"<22>ƒ‘’"
|
||
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 "<22>¥£¨áâàë",0
|
||
.stk db "‘⥪",0
|
||
.perek db "<22> ƒ<>„ ƒ >",0
|
||
.prog db "<22>à®£à ¬¬ ",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: |