* pic4, rdsave, cpuid: size optimization

* @ss: decrease used memory & time requirements, size optimization
* @panel: if there is only one window, Alt+[Shift+]Tab activates it
* jpegview: IPC service to unpack JPEG data for other apps
* chess: bmp-file is now inlined
* @ss, chess moved to more appropriate place in file structure

git-svn-id: svn://kolibrios.org@532 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Evgeny Grechnikov (Diamond) 2007-06-04 09:21:07 +00:00
parent 58a419e855
commit 827172f6c0
20 changed files with 1018 additions and 1970 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -33,7 +33,7 @@
PARAMS = memsize - 1024
appname equ 'Jpegview '
version equ '0.15'
version equ '0.16'
use32
@ -132,6 +132,8 @@ check_parameters:
cmp [PARAMS+2], byte "L"
je boot_set_background
@@:
cmp byte [PARAMS], 1
jz ipc_service
mov edi, name_string ; clear string with file name
mov al, 0
mov ecx, 100
@ -250,6 +252,110 @@ set_as_bgr2:
;******************************************************************************
ipc_service:
mcall 68, 11
mov esi, PARAMS+1
xor eax, eax
xor ecx, ecx
@@:
lodsb
test al, al
jz @f
lea ecx, [ecx*5]
lea ecx, [ecx*2+eax-'0']
jmp @b
@@:
add ecx, 16
mov edx, ecx
mcall 68, 12
test eax, eax
jnz @f
.exit:
mcall -1
@@:
mov ecx, eax
and dword [ecx], 0
mov dword [ecx+4], 8
mov [ipc_mem], ecx
mcall 60, 1
mcall 40, 1 shl 6
mcall 23, 500 ; wait up to 5 seconds for IPC message
test eax, eax
jz .exit
; we got message with JPEG data, now decode it
mov eax, [ecx+12]
mov [ipc_mem_size], eax
; init JPEG decoder
mov ecx,memsize-fin-stack_size ; size
mov edi,fin ; pointer
call add_mem ; mark memory from fin to 0x100000-1024 as free
call colorprecalc ; calculate colors
; hook file functions
mov ecx, 4
call malloc
and dword [edi], 0
lea eax, [edi-file_handler.position]
mov byte [read], 0xE9
mov dword [read+1], read_from_mem - (read+5)
; decode
call jpeg_info
mov dword [jpeg_st],ebp
test ebp,ebp
jz .end
mov eax, [ebp + x_size]
mul dword [ebp + y_size]
lea eax, [eax*3+8]
mov ecx, eax
mcall 68, 12
test eax, eax
jz .end
mov [ipc_mem_out], eax
mov ebx, [ebp + x_size]
mov [eax], ebx
mov ebx, [ebp + y_size]
mov [eax+4], ebx
mov dword [ebp+draw_ptr],put_chunk_to_mem
call jpeg_display
; IPC response
mov esi, [ebp + x_size]
imul esi, [ebp + y_size]
lea esi, [esi*3+8]
mov edx, [ipc_mem_out]
.response:
mov ecx, [ipc_mem]
mov ecx, [ecx+8]
mcall 60,2
jmp close_program ; close the program right now
.end:
mov esi, 8
mov edx, x_pointer ; points to 2 null dwords
jmp .response
read_from_mem:
; in: eax=handle, ecx=size, edi=pointer to buffer
; out: ecx=number of read bytes, buffer filled
pushad
mov esi, [ipc_mem]
add esi, 16
add esi, [eax+file_handler.position]
add ecx, [eax+file_handler.position]
cmp ecx, [ipc_mem_size]
jb @f
mov ecx, [ipc_mem_size]
@@:
sub ecx, [eax+file_handler.position]
add [eax+file_handler.position], ecx
rep movsb
popad
ret
;******************************************************************************
put_chunk_to_bgr:
pushad
@ -285,6 +391,32 @@ put_chunk_to_bgr:
;******************************************************************************
put_chunk_to_mem:
; in: (eax,ebx) = start coordinates of chunk
; (ecx,edx) = sizes of chunk
; edi -> chunk data
push esi edi edx
mov esi, edi
mov edi, ebx
imul edi, [ebp + x_size]
add edi, eax
lea edi, [edi*3+8]
add edi, [ipc_mem_out]
@@:
push ecx edi
lea ecx, [ecx*3]
rep movsb
pop edi ecx
add edi, [ebp + x_size]
add edi, [ebp + x_size]
add edi, [ebp + x_size]
dec edx
jnz @b
pop edx edi esi
ret
;******************************************************************************
; *********************************************
@ -597,8 +729,11 @@ iniciomemoria:
dd -(iniciomemoria+4),-(iniciomemoria+4),(iniciomemoria+4),.l1,0
.l1 dd 0
fin:
I_END:
sc system_colors
ipc_mem dd ?
ipc_mem_size dd ?
ipc_mem_out dd ?
fileattr: rb 40
dirinfo: rb 32+304
fin:

View File

@ -59,43 +59,20 @@ still:
cmp ah,101
jnz nochange
mov al,byte [usecard]
cld
inc al
and al,3
cmp al,0
jnz nozer
mov al,1
nozer:
mov byte [usecard],al
xor byte [usecard], 3 ; 1 <-> 2
call drawusedcard
nochange:
cmp byte [usecard],byte 1
jz usesb16
cmp byte [usecard],byte 2
jnz nousesb16II
jmp usesb16II
nousesb16II:
cmp byte [usecard],byte 3
jnz nousewss
jmp usewss
nousewss:
jnz usesb16II
; SOUND BLASTER 16
usesb16:
cld
mov al,20
cmp ah,al
jge nomain
@ -235,85 +212,6 @@ still:
; WINDOWS SOUND SYSTEM
usewss:
cld
mov al,20
cmp ah,al
jge wnomain
mov ecx,255
cmp ah,12
jnz wnomain12
mov ecx,200
wnomain12:
cmp ah,13
jnz wnomain13
mov ecx,150
wnomain13:
cmp ah,14
jnz wnomain14
mov ecx,70
wnomain14:
cmp ah,15
jnz wnomain15
mov ecx,0
wnomain15:
mov eax,27
mov ebx,1
mcall
jmp still
wnomain:
mov al,30
cmp ah,al
jge wnocd
mov ecx,255
cmp ah,22
jnz wnocd12
mov ecx,200
wnocd12:
cmp ah,23
jnz wnocd13
mov ecx,150
wnocd13:
cmp ah,24
jnz wnocd14
mov ecx,70
wnocd14:
cmp ah,25
jnz wnocd15
mov ecx,0
wnocd15:
mov eax,27
mov ebx,2
mcall
jmp still
wnocd:
jmp still
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
@ -335,49 +233,38 @@ draw_window:
mov edx,16 ; button id
mov ebx,10*65536
mov ebx,10*65536+22
newbut:
push edx
push ebx
mov esi,[bcolor]
mov eax,8 ; function 8 : define and draw button
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,35*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,45*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,55*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,65*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
mov bx,22 ; [x start] *65536 + [x size]
mov ecx,75*65536+8 ; [y start] *65536 + [y size]
dec edx
mcall
pop ebx
pop edx
add ebx,30*65536
add edx,10
cmp edx,16+6*10
jz butdone
jmp newbut
butdone:
jnz newbut
mov eax,4 ; function 4 : write text to window
@ -413,21 +300,12 @@ drawusedcard:
mov edx,[bcolor]
mcall
mov eax,[usecard]
mov edx,c3
cmp al,1
jnz nosbc
mov edx,c1
nosbc:
cmp al,2
cmp [usecard],2
jnz nosbcII
mov edx,c2
nosbcII:
cmp al,3
jnz nowssc
mov edx,c3
nowssc:
mov eax,4
mov ebx,14*65536+123
@ -453,14 +331,10 @@ text:
c1 db 'SOUND BLASTER 16 - MIXER I '
c2 db 'SOUND BLASTER 16 - MIXER II '
c3 db 'WINDOWS SOUND SYSTEM '
usecard dd 0x1
usecard db 0x1
title db 'MIXER',0
I_END:

View File

@ -13,6 +13,7 @@
include 'lang.inc'
include '..\..\..\macros.inc'
purge mov ; decrease kpack'ed size
START:
mov eax,48
@ -21,7 +22,9 @@ START:
mov edx,sizeof.system_colors
mcall
call check_parameters
cmp dword [I_Param], 'BOOT'
jz OnBoot
call draw_window
call load_texture
@ -53,69 +56,54 @@ still:
shr eax,8
cmp eax,101 ; tiled
cmp al,101 ; tiled
jne no101
mov ecx,1
setbgrmode:
mov eax,15
mov ebx,4
mov ecx,1
mcall
mov eax,15
mov ebx,3
dec ebx
mcall
jmp still
no101:
cmp eax,102 ; stretch
jne no102
mov eax,15
mov ebx,4
mov ecx,2
mcall
mov eax,15
mov ebx,3
mcall
jmp still
mov ecx, 2
cmp al, 102
jz setbgrmode
no102:
cmp eax,1 ; end program
cmp al,1 ; end program
jnz no_end
or eax,-1
mcall
no_end:
cmp eax,11
cmp al,11
jz bg
cmp eax,12
cmp al,12
jz bg
cmp eax,13
cmp al,13
jz bg
cmp eax,121
cmp al,121
jb no_bg_select
cmp eax,133
jg no_bg_select
sub eax,121
shl eax,2
add eax,arrays
mov eax,[eax]
cmp al,133
ja no_bg_select
mov eax,[arrays + (eax-121)*4]
mov [usearray],eax
call load_texture
call draw_image
jmp still
no_bg_select:
cmp eax,14+20
cmp al,14+20
jge bg4
jmp bg2
check_parameters:
cmp [I_Param],dword 'BOOT'
je @f
ret
@@:
OnBoot:
call load_texture
@ -125,7 +113,6 @@ check_parameters:
mov edx,256
mcall
mov eax,15
mov ebx,5
mov ecx,0x40000 ; <<< 0x40000 for blue, 0x40000+1 for red,
; <<< 0x40000+2 for green background at boot
@ -133,13 +120,11 @@ check_parameters:
mov esi,256*3*256
mcall
mov eax,15
mov ebx,4
dec ebx
mov ecx,2
mcall
mov eax,15
mov ebx,3
dec ebx
mcall
mov eax,-1
@ -178,13 +163,13 @@ bg:
mov edi,0x40000
cmp eax,12
cmp al,12
jnz bb1
mov edi,0x40000+1
inc edi
bb1:
cmp eax,13
cmp al,13
jnz bb2
mov edi,0x40000+2
inc edi
bb2:
mov eax,15
@ -193,14 +178,12 @@ bg:
mov edx,256
mcall
mov eax,15
mov ebx,5
mov ecx,edi
mov edx,0
mov esi,256*256*3
mcall
mov eax,15
mov ebx,3
mcall
@ -210,33 +193,12 @@ bg:
; colored background
bg2:
push eax
mov edi, eax
mcall 15,4,1
mov eax,15
mov ebx,1
mov ecx,1
mov edx,1
mcall
pop eax
sub eax,14
imul eax,3
mov ecx,fill
add ecx,eax
mov eax,15
mov ebx,5
xor edx,edx
mov esi,3*1*1
mcall
mov eax,15
mov ebx,3
mcall
mcall ,1,,1
lea ecx, [(edi-14)*3+fill]
mcall ,5,,0,3*1*1
mcall ,3
jmp still
@ -245,9 +207,8 @@ bg2:
bg4:
sub eax,14+20
shl eax,3
add eax,shape
add eax,shape - (14+20)*8
mov ecx,[eax+0]
mov edx,[eax+4]
@ -255,7 +216,6 @@ bg4:
mov ebx,1
mcall
mov eax,15
mov ebx,3
mcall
@ -275,17 +235,17 @@ bg4:
gentexture:
mov ecx,0 ; ycounter
mov edi,0 ; pixel counter
xor ecx,ecx ; ycounter
xor edi,edi ; pixel counter
mov ebp,[usearray]
ylup:
mov ebx,0
xor ebx,ebx
xlup:
push edi
mov edi, 0
xor edi, edi
mov esi, 512000000 ; abnormous initial value :)
pixlup:

View File

@ -20,19 +20,6 @@ use32
include 'lang.inc'
include '..\..\..\macros.inc'
;file_info:
;
; dd 0,0,-1,0x4000,0x20000
; db '/rd/1/chess.bmp',0
file_info:
dd 0
dd 0
dd 0
dd -1
dd 0x4000
db '/rd/1/network/chess.bmp',0
pawn_color:
dd 0x000000
@ -61,11 +48,7 @@ text equ texts+80*32*4
START: ; start of execution
mov eax,70
mov ebx,file_info
mcall
mov esi,0x4000+22*3+4+24*2
mov esi,chess_bmp
mov edi,0x10000+18*3
mov ebx,0
@ -1309,16 +1292,10 @@ chess_board:
times 80*20 db 0
chess_bmp:
file 'chess.bmp':22*3+4+24*2
board_old:
I_END:

File diff suppressed because it is too large Load Diff

View File

@ -19,14 +19,13 @@ inc eax
cpuid
cnnn0:
cmp bl, 00h
ja rr
je cnnn1
test bl, bl
jz cnnn1
rr:
mov byte [brand], bl ;
Text 60,250,0x00000000,abrand00, abrand00len-abrand00
jmp B000
ret
;jmp comppp
cnnn1:
@ -34,245 +33,222 @@ cnnn1:
mov eax, 0x80000001 ; CPUID ext. function 0x80000001
cpuid
cmp ebx, 0
test ebx, ebx
je Bi00
mov word [brand], bx ;
mov [brand], ebx ;
comppp:
cmp [brand], 400h
jl res1
cmp [brand], 500h
jl res2
jae res3
cmp byte [brand+1], 4
jb res1
jz res2
ja res3
res1:
Text 60,250,0x00000000,abrand0, abrand0len-abrand0
jmp B000
ret
res2:
Text 60,250,0x00000000,abrand1, abrand1len-abrand1
jmp B000
ret
res3:
Text 60,250,0x00000000,abrand2, abrand2len-abrand2
jmp B000
ret
;;;;;;;;;;;;;;;;;;;;; intel brand
intel_br:
xor eax,eax
inc eax
cpuid
movzx ebx, bl
mov [brand], ebx
cmp0:
cmp bl, 00h
test ebx, ebx
je Bi00
cmp1:
cmp bl, 01h
dec ebx
je Bi01
cmp2:
cmp bl, 02h
dec ebx
je Bi02
cmp3:
cmp bl, 03h
dec ebx
je Bi03
cmp4:
cmp bl, 04h
dec ebx
je Bi04
cmp6:
cmp bl, 06h
dec ebx
dec ebx
je Bi06
cmp7:
cmp bl, 07h
dec ebx
je Bi07
cmp8:
cmp bl, 08h
dec ebx
je Bi08
cmp9:
cmp bl, 09h
dec ebx
je Bi09
cmpA:
cmp bl, 0Ah
dec ebx
je Bi0A
cmpB:
cmp bl, 0Bh
dec ebx
je Bi0B
cmpC:
cmp bl, 0Ch
dec ebx
je Bi0C
cmpE:
cmp bl, 0Eh
dec ebx
dec ebx
je Bi0E
cmpF:
cmp bl, 0Fh
dec ebx
je Bi0F
cmp11:
cmp bl, 11h
dec ebx
dec ebx
je Bi11
cmp12:
cmp bl, 12h
dec ebx
je Bi12
cmp13:
cmp bl, 13h
dec ebx
je Bi13
cmp14:
cmp bl, 14h
dec ebx
je Bi14
cmp15:
cmp bl, 15h
dec ebx
je Bi15
cmp16:
cmp bl, 16h
dec ebx
je Bi16
cmp17:
cmp bl, 17h
dec ebx
je Bi17
jne Bi00
;------------------
Bi00:
mov byte [brand], bl ;00h
Text 60,250,0x00000000,brand0, brand0len-brand0
;Number 270,180,1*256,2,dword [brand],0x000000 was in v. 1.11
jmp B000
ret
Bi01:
mov [brand], 01h
Text 60,250,0x00000000,brand01, brand01len-brand01
jmp B000
ret
Bi02:
mov [brand], 02h
Text 60,250,0x00000000,brand02, brand02len-brand02
jmp B000
ret
Bi03:
mov [brand], 03h
cmp [m], 8
je E3
Text 60,250,0x00000000,brand03, brand03len-brand03
jmp B000
ret
E3:
Text 60,250,0x00000000,brand03d, brand03dlen-brand03d
jmp B000
ret
Bi04:
mov [brand], 04h
Text 60,250,0x00000000,brand04, brand04len-brand04
jmp B000
ret
Bi06:
mov [brand], 06h
Text 60,250,0x00000000,brand06, brand06len-brand06
jmp B000
ret
Bi07:
mov [brand], 07h
Text 60,250,0x00000000,brand07, brand07len-brand07
jmp B000
ret
Bi08:
mov [brand], 08h
Text 60,250,0x00000000,brand08, brand08len-brand08
jmp B000
ret
Bi09:
mov [brand], 09h
Text 60,250,0x00000000,brand09, brand09len-brand09
jmp B000
ret
Bi0A:
mov [brand], 0Ah
Text 60,250,0x00000000,brand0A, brand0Alen-brand0A
jmp B000
ret
Bi0B:
mov [brand], 0Bh
cmp [m], 13
jl Eb
Text 60,250,0x00000000,brand0B, brand0Blen-brand0B
jmp B000
ret
Eb:
Text 60,250,0x00000000,brand0Bd, brand0Bdlen-brand0Bd
jmp B000
ret
Bi0C:
mov [brand], 0Ch
Text 60,250,0x00000000,brand0C, brand0Clen-brand0C
jmp B000
ret
Bi0E:
mov [brand], 0Eh
cmp [m], 13
jl Ed
Text 60,250,0x00000000,brand0E, brand0Elen-brand0E
jmp B000
ret
Ed:
Text 60,250,0x00000000,brand0Ed, brand0Edlen-brand0Ed
jmp B000
ret
Bi0F:
mov [brand], 0Fh
Text 60,250,0x00000000,brand0F, brand0Flen-brand0F
jmp B000
ret
Bi11:
mov [brand], 11h
Text 60,250,0x00000000,brand11, brand11len-brand11
jmp B000
ret
Bi12:
mov [brand], 12h
Text 60,250,0x00000000,brand12, brand12len-brand12
jmp B000
ret
Bi13:
mov [brand], 13h
Text 60,250,0x00000000,brand13, brand13len-brand13
jmp B000
ret
Bi14:
mov [brand], 14h
Text 60,250,0x00000000,brand14, brand14len-brand14
jmp B000
ret
Bi15:
mov [brand], 15h
Text 60,250,0x00000000,brand15, brand15len-brand15
jmp B000
ret
Bi16:
mov [brand], 16h
Text 60,250,0x00000000,brand16, brand16len-brand16
jmp B000
ret
Bi17:
mov [brand], 17h
Text 60,250,0x00000000,brand17, brand17len-brand17
jmp B000
B000:
ret

View File

@ -1,5 +1,14 @@
; Decoding cache L1,L2,L3 for Intel
decodecache32:
call decodecache
decodecache24:
shr eax, 8
call decodecache
shr eax, 8
call decodecache
shr eax, 8
decodecache:
@ -61,256 +70,207 @@ je kk10
comp11:
cmp al, 0Ah
je kk11
je Ld8
comp12:
cmp al, 66h
je kk12
je Ld8
comp13:
cmp al, 0Ch
je kk13
je Ld16
comp14:
cmp al, 10h
je kk14
je Ld16
comp15:
cmp al, 67h
je kk15
je Ld16
comp16:
cmp al, 2Ch
je kk16
je Ld32
comp17:
cmp al, 68h
je kk17
je Ld32
;-------L2
comp18:
cmp al, 39h
je kk18
je L128
comp19:
cmp al, 3Bh
je kk19
je L128
comp20:
cmp al, 79h
je kk20
je L128
comp21:
cmp al, 81h
je kk21
je L128
comp22:
cmp al, 3Ch
je kk22
je L256
comp23:
cmp al, 7Ah
je kk23
je L256
comp24:
cmp al, 7Eh
je kk24
je L256
comp25:
cmp al, 82h
je kk25
je L256
comp26:
cmp al, 7Bh
je kk26
je L512
comp27:
cmp al, 83h
je kk27
je L512
comp28:
cmp al, 86h
je kk28
je L512
comp29:
cmp al, 7Ch
je kk29
je L1024
comp30:
cmp al, 84h
je kk30
je L1024
comp31:
cmp al, 87h
je kk31
je L1024
comp32:
cmp al, 85h
je kk32
je L2048
;-----L1 Trace instr
comp33:
cmp al, 70h
je kk33
je Li12
comp34:
cmp al, 71h
je kk34
je Li16
comp35:
cmp al, 72h
je kk35
je Li32
;----New codes
comp36:
cmp al, 60h
je kk36
je Ld16
comp37:
cmp al, 78h
je kk37
je L1024
comp38:
cmp al, 7Dh
je kk38
je L2048
;---- L3
comp39:
cmp al, 22h
je kk39
je L305
comp40:
cmp al, 23h
je kk40
je L31
comp41:
cmp al, 25h
je kk41
je L32
comp42:
cmp al, 29h
je kk42
je L34
comp43:
cmp al, 88h
je kk43
je L32
comp44:
cmp al, 89h
je kk44
je L34
comp45:
cmp al, 8Ah
je kk45
je L38
comp46:
cmp al, 8Dh
je kk46
je L34
;============= v. 2.04
comp47:
cmp al, 73h
je kk47
je Li64
comp48:
cmp al, 1Ah
je kk48
je L96
comp49:
cmp al, 3Ah
je kk49
je L192
comp50:
cmp al, 3Dh
je kk50
je L384
comp51:
cmp al, 3Eh
je kk51
je L512
comp52:
cmp al, 7Fh
je kk52
je L512
comp53:
cmp al, 46h
je kk53
je L34
comp54:
cmp al, 47h
je kk54
je L38
comp55:
cmp al, 49h
je kk55
je L34
comp56:
cmp al, 4Ah
je kk56
je L36
comp57:
cmp al, 4Bh
je kk57
je L38
comp58:
cmp al, 4Ch
je kk58
je L312
comp59:
cmp al, 4Dh
je kk59
je L316
jne L000
ret
;------------------
kk1:
@ -708,7 +668,7 @@ jmp L000
L316:
mov [L3], 16384
jmp L000
;jmp L000

View File

@ -2,15 +2,11 @@
macro Window xStart,yStart,xSize,ySize,bColor,gColor,fColor
{
mov ebx,xStart
shl ebx,16
add ebx,xSize
mov ecx,yStart
shl ecx,16
add ecx,ySize
mov edx,bColor
mov esi,gColor
mov edi,fColor
__mov ebx,xStart,xSize
__mov ecx,yStart,ySize
__mov edx,bColor
__mov esi,gColor
__mov edi,fColor
xor eax,eax
mcall
}
@ -19,12 +15,10 @@ macro Window xStart,yStart,xSize,ySize,bColor,gColor,fColor
;WriteTextToWindow
macro Text xStart,yStart,rgbColor,pText,nTextLen
{
mov ebx,xStart
shl ebx,16
add ebx,yStart
mov ecx,rgbColor
mov edx,pText
mov esi,nTextLen
__mov ebx,xStart,yStart
__mov ecx,rgbColor
__mov edx,pText
__mov esi,nTextLen
mov eax,4
mcall
}
@ -32,55 +26,38 @@ macro Text xStart,yStart,rgbColor,pText,nTextLen
;DisplayNumber
macro Number xStart,yStart,nPrintType,noOfDigits,Data,rgbColor
{
mov edx,xStart
shl edx,16
add edx,yStart
mov ebx,noOfDigits
shl ebx,16
or ebx,nPrintType
mov ecx,Data
mov esi,rgbColor
__mov edx,xStart,yStart
__mov ebx,noOfDigits,nPrintType
__mov ecx,Data
__mov esi,rgbColor
mov eax,47
mcall
}
macro DrawLine xStart,xEnd,yStart,yEnd,rgbColor
{
mov ebx,xStart
shl ebx,16
add ebx,xEnd
mov ecx,yStart
shl ecx,16
add ecx, yEnd
mov edx,rgbColor
__mov ebx,xStart,xEnd
__mov ecx,yStart,yEnd
__mov edx,rgbColor
mov eax,38
mcall
}
macro PutImage xPos,yPos,xImage,yImage,pImage
{
mov ecx,xImage
shl ecx,16
add ecx, yImage
mov edx,xPos
shl edx,16
add edx,yPos
mov ebx,pImage
__mov ecx,xImage,yImage
__mov edx,xPos,yPos
__mov ebx,pImage
mov eax,7
mcall
}
macro Button xStart,yStart,xSize,ySize,nID,rgbColor
{
mov ebx,xStart
shl ebx,16
add ebx,xSize
mov ecx,yStart
shl ecx,16
add ecx,ySize
mov edx,nID
mov esi,rgbColor
__mov ebx,xStart,xSize
__mov ecx,yStart,ySize
__mov edx,nID
__mov esi,rgbColor
mov eax,8
mcall
}

View File

@ -68,6 +68,30 @@ CMPL_FLAG equ 0002h ; core multi-processing legacy mode 1
SVM_FLAG equ 0004h ; secure virtual machine 2
MOVCR8_FLAG equ 0010h ;AltMovCr8 4
;//////////////////////////////////////////////
decode_sse3: ; is SS3 supported
xor eax, eax
inc eax
cpuid
test ecx, 1
setnz [sse3sup]
mov eax, sse3+6
write_yes_no:
mov dword [eax], 'no'
jz @f
mov dword [eax], 'yes'
@@:
ret
show_next_bit:
shr edx, 1
write_yes_no_cf:
mov dword [eax], 'no'
jnc @f
mov dword [eax], 'yes'
@@:
ret
;decoding standard features
@ -77,668 +101,230 @@ decode_standard_features:
inc eax
cpuid
Test0:
test edx, FPU_FLAG
jnz Test0e
mov eax, FPU+6
call show_next_bit
mov dword [FPU+6], $6F6E
jmp Test1
mov eax, VME+7
call show_next_bit
Test0e:
mov dword [FPU+6], $736579
mov eax, DE+7
call show_next_bit
;;;;;;
Test1:
test edx, VME_FLAG
jnz Test1e
mov eax, PSE+8
call show_next_bit
mov dword [VME+ 7], $6F6E
jmp Test2
mov eax, TSC+6
call show_next_bit
Test1e:
mov dword [VME+ 7], $736579
mov eax, MSR+7
call show_next_bit
;;;;;;
Test2:
test edx, DE_FLAG
jnz Test2e
mov eax, PAE+7
call show_next_bit
mov dword [DE+ 7], $6F6E
jmp Test3
mov eax, MCE+8
call show_next_bit
Test2e:
mov dword [DE+ 7], $736579
;;;;;;
mov eax, CX8+6
call show_next_bit
Test3:
test edx, PSE_FLAG
jnz Test3e
mov eax, APIC+7
call show_next_bit
mov dword [PSE+ 8], $6F6E
jmp Test4
shr edx, 1 ; skip reserved bit
Test3e:
mov dword [PSE+ 8], $736579
mov eax, SEP+8
call show_next_bit
;;;;
Test4:
test edx, TSC_FLAG
jnz Test4e
mov eax, MTRR+6
call show_next_bit
mov dword [TSC+ 6], $6F6E
jmp Test5
mov eax, PGE+7
call show_next_bit
Test4e:
mov dword [TSC+ 6], $736579
mov eax, MCA+7
call show_next_bit
;;;;
Test5:
test edx, MSR_FLAG
jnz Test5e
mov eax, CMOV+8
call show_next_bit
mov dword [MSR+ 7], $6F6E
jmp Test6
mov eax, PAT+6
call show_next_bit
Test5e:
mov dword [MSR+ 7], $736579
mov eax, PSE36+7
call show_next_bit
;;;;
Test6:
test edx, PAE_FLAG
jnz Test6e
mov eax, PSNUM+7
call show_next_bit
mov dword [PAE+ 7], $6F6E
jmp Test7
mov eax, CLFLUSHn+8
call show_next_bit
Test6e:
mov dword [PAE+ 7], $736579
shr edx, 1 ; skip reserved bit
;;;;
Test7:
test edx, MCE_FLAG
jnz Test7e
mov eax, DTS+7
call show_next_bit
mov dword [MCE+ 8], $6F6E
jmp Test8
mov eax, ACPI+7
call show_next_bit
Test7e:
mov dword [MCE+ 8], $736579
mov eax, MMX+8
call show_next_bit
mov eax, [eax]
mov [MMXs+7], eax
;;;;
Test8:
test edx, CX8_FLAG
jnz Test8e
mov eax, FXSR+6
call show_next_bit
mov dword [CX8+ 6], $6F6E
jmp Test9
mov eax, SSE+7
call show_next_bit
Test8e:
mov dword [CX8+ 6], $736579
;;;;
mov eax, SSE2+7
call show_next_bit
Test9:
test edx, APIC_FLAG
jnz Test9e
mov eax, SSn+8
call show_next_bit
mov dword [APIC+ 7], $6F6E
jmp Test11
shr edx, 1
; mov eax, HTT+8
; test edx, HTT_FLAG
; call write_yes_no
Test9e:
mov dword [APIC+ 7], $736579
;;;;;
mov eax, TM+7
call show_next_bit
Test11:
test edx, SEP_FLAG
jnz Test11e
mov eax, IA64+7
call show_next_bit
mov dword [SEP+ 8], $6F6E
jmp Test12
mov eax, PBE+8
call show_next_bit
Test11e:
mov dword [SEP+ 8], $736579
;;;;
ret
Test12:
test edx, MTRR_FLAG
jnz Test12e
mov dword [MTRR+ 6], $6F6E
jmp Test13
Test12e:
mov dword [MTRR+ 6], $736579
;;;;
Test13:
test edx, PGE_FLAG
jnz Test13e
mov dword [PGE+ 7], $6F6E
jmp Test14
Test13e:
mov dword [PGE+ 7], $736579
;;;;;
Test14:
test edx, MCA_FLAG
jnz Test14e
mov dword [MCA+ 7], $6F6E
jmp Test15
Test14e:
mov dword [MCA+ 7], $736579
;;;;
Test15:
test edx, CMOV_FLAG
jnz Test15e
mov dword [CMOV+ 8], $6F6E
jmp Test16
Test15e:
mov dword [CMOV+ 8], $736579
;;;;
Test16:
test edx, PAT_FLAG
jnz Test16e
mov dword [PAT+ 6], $6F6E
jmp Test17
Test16e:
mov dword [PAT+ 6], $736579
;;;;
Test17:
test edx, PSE36_FLAG
jnz Test17e
mov dword [PSE36+ 7], $6F6E
jmp Test18
Test17e:
mov dword [PSE36+ 7], $736579
;;;;
Test18:
test edx, PSNUM_FLAG
jnz Test18e
mov dword [PSNUM+ 7], $6F6E
jmp Test19
Test18e:
mov dword [PSNUM+ 7], $736579
;;;;
Test19:
test edx, CLFLUSH_FLAG
jnz Test19e
mov dword [CLFLUSHn + 8], $6F6E
jmp Test21
Test19e:
mov dword [CLFLUSHn + 8], $736579
;;;;
Test21:
test edx, DTS_FLAG
jnz Test21e
mov dword [DTS+ 7], $6F6E
jmp Test22
Test21e:
mov dword [DTS+ 7], $736579
;;;;
Test22:
test edx, ACPI_FLAG
jnz Test22e
mov dword [ACPI+ 7], $6F6E
jmp Test23
Test22e:
mov dword [ACPI+ 7], $736579
;;;;;
Test23:
test edx, MMX_FLAG
jnz Test23e
mov dword [MMX+ 8], $6F6E
mov dword [MMXs+ 7], $6F6E
jmp Test24
Test23e:
mov dword [MMX+ 8], $736579
mov dword [MMXs+ 7], $736579
;;;;;
Test24:
test edx, FXSR_FLAG
jnz Test24e
mov dword [FXSR+ 6], $6F6E
jmp Test25
Test24e:
mov dword [FXSR+ 6], $736579
;;;;;
Test25:
test edx, SSE_FLAG
jnz Test25e
mov dword [SSE+ 7], $6F6E
jmp Test26
Test25e:
mov dword [SSE+ 7], $736579
;;;;
Test26:
test edx, SSE2_FLAG
jnz Test26e
mov dword [SSE2+ 7], $6F6E
jmp Test27
Test26e:
mov dword [SSE2+ 7], $736579
;;;;
Test27:
test edx, SS_FLAG
jnz Test27e
mov dword [SSn+ 8], $6F6E
jmp Test29;28
Test27e:
mov dword [SSn+ 8], $736579
;;;;
;Test28:
;test edx, HTT_FLAG
;jnz Test28e
;
;mov dword [HTT+ 8], $6F6E
;jmp Test29
;
;Test28e:
;mov dword [HTT+ 8], $736579
;;;;
Test29:
test edx, TM_FLAG
jnz Test29e
mov dword [TM+ 7], $6F6E
jmp Test30
Test29e:
mov dword [TM+ 7], $736579
;;;;
Test30:
test edx, IA64_FLAG
jnz Test30e
mov dword [IA64+ 7], $6F6E
jmp Test31
Test30e:
mov dword [IA64+ 7], $736579
;;;;
Test31:
test edx, PBE_FLAG
jnz Test31e
mov dword [PBE+ 8], $6F6E
jmp Standart_out
Test31e:
mov dword [PBE+ 8], $736579
Standart_out:
ret
;//////////////////////////////////////////////
decode_sse3: ; is SS3 supported
xor eax,eax
inc eax
cpuid
test ecx, $1 ; Test bit 1
jnz .EX; SSE3 technology is supported
jz .EXN
.EX:
mov dword [sse3+ 6], $736579
mov [sse3sup], 1
jmp exitter
.EXN:
mov dword [sse3+ 6], $6F6E
mov [sse3sup],0
exitter:
ret
;//////////////////////////////////////////////
decode_extended_features:
xor eax,eax
inc eax
cpuid
Tes1:
test ecx, SSE3_FLAG
jnz Tes1e
; is called immediately after decode_standard_features
; xor eax, eax
; inc eax
; cpuid
mov dword [SS3+ 8], $6F6E
jmp Tes2
mov eax, SS3+8
test ecx, SSE3_FLAG
call write_yes_no
Tes1e:
mov dword [SS3+ 8], $736579
mov eax, MON+8
test ecx, MON_FLAG
call write_yes_no
mov eax, DS_CPL+8
test ecx, DS_CPL_FLAG
call write_yes_no
Tes2:
test ecx, MON_FLAG
jnz Tes2e
mov eax, EST+8
test ecx, EST_FLAG
call write_yes_no
mov dword [MON+ 8], $6F6E
jmp Tes3
mov eax, TM2+8
test ecx, TM2_FLAG
call write_yes_no
Tes2e:
mov dword [MON+ 8], $736579
mov eax, CNXT_ID+12
test ecx, CNXT_ID_FLAG
call write_yes_no
mov eax, CX16+12
test ecx, CX16_FLAG
call write_yes_no
Tes3:
test ecx, DS_CPL_FLAG
jnz Tes3e
mov eax, ETPRD+12
test ecx, ETPRD_FLAG
call write_yes_no
mov dword [DS_CPL+ 8], $6F6E
jmp Tes4
mov eax, VMX+8
test ecx, VMX_FLAG
call write_yes_no
Tes3e:
mov dword [DS_CPL+ 8], $736579
mov eax, SSSE3+12
test ecx, SSSE3_FLAG
call write_yes_no
Tes4:
test ecx, EST_FLAG
jnz Tes4e
mov dword [EST+ 8], $6F6E
jmp Tes5
Tes4e:
mov dword [EST+ 8], $736579
Tes5:
test ecx, TM2_FLAG
jnz Tes5e
mov dword [TM2+ 8], $6F6E
jmp Tes6
Tes5e:
mov dword [TM2+ 8], $736579
Tes6:
test ecx, CNXT_ID_FLAG
jnz Tes6e
mov dword [CNXT_ID+ 12], $6F6E
jmp Tes7
Tes6e:
mov dword [CNXT_ID+ 12], $736579
Tes7:
test ecx, CX16_FLAG
jnz Tes7e
mov dword [CX16+ 12], $6F6E
jmp Tes8
Tes7e:
mov dword [CX16+ 12], $736579
Tes8:
test ecx, ETPRD_FLAG
jnz Tes8e
mov dword [ETPRD+ 12], $6F6E
jmp Tes9
Tes8e:
mov dword [ETPRD+ 12], $736579
Tes9:
test ecx, VMX_FLAG
jnz Tes9e
mov dword [VMX+ 8], $6F6E
jmp Tes10
Tes9e:
mov dword [VMX+ 8], $736579
Tes10:
test ecx, SSSE3_FLAG
jnz Tes10e
mov dword [SSSE3+ 12], $6F6E
jmp Tes11
Tes10e:
mov dword [SSSE3+ 12], $736579
Tes11:
test ecx, DCA_FLAG
jnz Tes11e
mov dword [DCA+ 8], $6F6E
jmp Tes12
Tes11e:
mov dword [DCA+ 8], $736579
Tes12:
ret
mov eax, DCA+8
test ecx, DCA_FLAG
call write_yes_no
@@:
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
decode_extended:
xor eax, eax
mov eax,$80000000
mov eax, $80000000
cpuid
mov [extc], eax ; max number of calls
test eax, eax
jns @b
test eax, 80000000h
jnz gooodd
jmp baaad
baaad:
jmp Tez13
gooodd:
xor eax, eax
mov eax, $80000001 ;// Setup extended function 8000_0001h
cpuid
Tez1:
test edx, MP_FLAG
jnz Tez1e
mov eax, MP+8
test edx, MP_FLAG
call write_yes_no
mov dword [MP+8], $6F6E
jmp Tez2
mov eax, NX+8
test edx, NX_FLAG
call write_yes_no
Tez1e:
mov dword [MP+ 8], $736579
Tez2:
test edx, NX_FLAG
jnz Tez2e
mov dword [NX+ 8], $6F6E
jmp Tez4
;jmp Tez3 we do detection in another place, because of Cyrix specific MMX+ detection
; mov eax, MMXPi+8
; test edx, MMXPi_FLAG
; call write_yes_no
Tez2e:
mov dword [NX+ 8], $736579
mov eax, MMXn+8
test edx, MMXn_FLAG
call write_yes_no
;Tez3:
;test edx, MMXPi_FLAG
;jnz Tez3e
mov eax, FXSRn+8
test edx, FXSRn_FLAG
call write_yes_no
;mov dword [MMXPi+ 8], $6F6E
;jmp Tez4
mov eax, FFXSR+12
test edx, FFXSR_FLAG
call write_yes_no
mov eax, TSCP+12
test edx, TSCP_FLAG
call write_yes_no
;Tez3e:
;mov dword [MMXPi+ 8], $736579
mov eax, LM+12
test edx, LM_FLAG
call write_yes_no
Tez4:
test edx, MMXn_FLAG
jnz Tez4e
mov eax, DNo+12
test edx, DNo_FLAG
call write_yes_no
mov dword [MMXn+ 8], $6F6E
jmp Tez5
Tez4e:
mov dword [MMXn+ 8], $736579
Tez5:
test edx, FXSRn_FLAG
jnz Tez5e
mov dword [FXSRn+ 8], $6F6E
jmp Tez6
Tez5e:
mov dword [FXSRn+ 8], $736579
Tez6:
test edx, FFXSR_FLAG
jnz Tez6e
mov dword [FFXSR+ 12], $6F6E
jmp Tez7
Tez6e:
mov dword [FFXSR+ 12], $736579
Tez7:
test edx, TSCP_FLAG
jnz Tez7e
mov dword [TSCP+ 12], $6F6E
jmp Tez8
Tez7e:
mov dword [TSCP+ 12], $736579
Tez8:
test edx, LM_FLAG
jnz Tez8e
mov dword [LM+ 12], $6F6E
jmp Tez9
Tez8e:
mov dword [LM+ 12], $736579
Tez9:
test edx, DNo_FLAG
jnz Tez9e
mov dword [DNo+ 12], $6F6E
jmp Tez10
Tez9e:
mov dword [DNo+ 12], $736579
Tez10:
test edx, DN_FLAG
jnz Tez10e
mov dword [DN+ 12], $6F6E
jmp Tez11
Tez10e:
mov dword [DN+ 12], $736579
mov eax, DN+12
test edx, DN_FLAG
call write_yes_no
;Intel
mov eax, SYS+12
test edx, SYS_FLAG
call write_yes_no
Tez11:
test edx, SYS_FLAG
jnz Tez11e
mov eax, LAF+12
test ecx, LAHF_FLAG
call write_yes_no
mov dword [SYS+ 12], $6F6E
jmp Tez12
mov eax, CMPL+12
test ecx, CMPL_FLAG
call write_yes_no
Tez11e:
mov dword [SYS+ 12], $736579
mov eax, SVM+8
test ecx, SVM_FLAG
call write_yes_no
mov eax, MCR8+12
test ecx, MOVCR8_FLAG
call write_yes_no
Tez12:
test ecx, LAHF_FLAG
jnz Tez12e
mov dword [LAF+ 12], $6F6E
jmp Tez13
Tez12e:
mov dword [LAF+ 12], $736579
Tez13:
test ecx, CMPL_FLAG
jnz Tez13e
mov dword [CMPL+ 12], $6F6E
jmp Tez14
Tez13e:
mov dword [CMPL+ 12], $736579
Tez14:
test ecx, SVM_FLAG
jnz Tez14e
mov dword [SVM+ 8], $6F6E
jmp Tez15
Tez14e:
mov dword [SVM+ 8], $736579
Tez15:
test ecx, MOVCR8_FLAG
jnz Tez15e
mov dword [MCR8+ 12], $6F6E
jmp Tez16
Tez15e:
mov dword [MCR8+ 12], $736579
Tez16:
ret
ret

View File

@ -4,9 +4,9 @@ gif_hash_offset = gif_hash_area
macro gif2img gifsrc,imgsrc
{
local hasharea, ReadGIF, nextblock,_null
local globalColor, img_count, cur_info, img_start
local codesize, compsize, bit_count, CC, EOI, Palette
local block_ofs, table_ptr, gifmacend
;local globalColor, img_count, cur_info, img_start
;local codesize, compsize, bit_count, CC, EOI, Palette
;local block_ofs, table_ptr, gifmacend
local no_gc, block_skip, no_comm, noextblock, uselocal
local setPal, filltable, reinit, cycle, zadd, noinc
local notintable, er, zend, nxt, continue, ex, Gif_skipmap
@ -29,7 +29,7 @@ end if
end if
call ReadGIF
jmp gifmacend
ret
if defined gif_hash_offset
else
@ -46,7 +46,7 @@ ReadGIF:
mov [img_count],eax
inc eax
cmp dword[esi],'GIF8'
jne er ; signature
jne ex ; signature
mov ecx,[esi+0xa]
inc eax
add esi,0xd
@ -81,7 +81,7 @@ no_comm:
jmp block_skip
noextblock:
cmp byte[edi],0x2c ; image beginning
jne er
jne ex
inc [img_count]
inc edi
mov esi,[cur_info]
@ -137,7 +137,6 @@ filltable:
inc eax
loop filltable
pop edi
mov [img_start],edi
reinit:
mov edx,[EOI]
inc edx
@ -180,9 +179,6 @@ notintable:
call Gif_output
pop ebx eax
jmp zadd
er:
pop edi
jmp ex
zend:
; mov eax,[.cur_info] ; skip offset to next frame
; mov [eax],edi
@ -197,8 +193,6 @@ nxt:
continue:
; cmp byte[edi],0x3b ;read next frame
; jne nextblock
xor eax,eax
stosd
mov ecx,[img_count]
ex:
pop edi esi
@ -283,18 +277,6 @@ loop2:
pop edx eax esi
ret
globalColor dd 1
img_count dd 1
cur_info dd 1 ; image table pointer
img_start dd 1
codesize dd 1
compsize dd 1
bit_count dd 1
CC dd 1
EOI dd 1
Palette dd 1
block_ofs dd 1
table_ptr dd 1
gifmacend:
}

View File

@ -1,29 +1,20 @@
amd:
file 'amd.gif' ;include gif file
rb 50 ;50 bytes temp back zone
cyrix:
file 'cyrix.gif' ;include gif file
rb 50 ;50 bytes temp back zone
idt:
file 'idt.gif' ;include gif file
rb 50 ;50 bytes temp back zone
intel:
file 'intel.gif' ;include gif file
rb 50 ;50 bytes temp back zone
transmeta:
file 'transmet.gif' ;include gif file
rb 50 ;50 bytes temp back zone
via:
file 'via.gif' ;include gif file
rb 50 ;50 bytes temp back zone
knopka:
file 'knopka.gif' ;include gif file
rb 50 ;50 bytes temp back zone

View File

@ -596,9 +596,3 @@ module:
;p=1042128803351525332193283695592003066548124262686459610611886292768993621049491
;q=1273712981880077616387281148672409277231717442781838063285512054053473668300963
;n=1327372985619988354987062708438042005329282516404896732667039640816200186465366322016844458439816997285872910403676793109807015096535910981266920474905959833
num1 rd 40
num2 rd 40
num3 rd 40
iter rd 1
openkey rd 1

View File

@ -172,8 +172,8 @@ alt_tab_pressed:
mov eax, 9
jb .fill
mov [alt_tab_list_size], edx
cmp edx, 2
jb begin_1.ret
test edx, edx
jz begin_1.ret
mcall 66,4,0,0 ; «®¢¨¬ ¬®¬¥­â ®â¯ã᪠­¨ï ¢á¥å ã¯à ¢«ïîé¨å ª« ¢¨è
test eax, eax
jnz begin_1.ret

View File

@ -25,8 +25,10 @@ version equ '1.2'
dd 0x0 ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
dd 0x0 ; § à¥§¥à¢¨à®¢ ­®
include '..\..\..\develop\examples\editbox\trunk\editbox.inc'
include '..\..\develop\editbox\editbox.inc'
use_edit_box procinfo,22,5
al equ eax ; \ decrease kpack'ed size
purge mov ; /
;---------------------------------------------------------------------
;--- <20>€—€Ž <20><>Žƒ<C5BD>€ŒŒ ----------------------------------------------
@ -44,9 +46,7 @@ red: ;
;---------------------------------------------------------------------
still:
push 10
pop eax
mcall
mcall 10
dec eax ; ¯¥à¥à¨á®¢ âì ®ª­®?
jz red ; ¥á«¨ ¤  - ­  ¬¥âªã red
@ -56,7 +56,7 @@ still:
jz button
mouse:
mouse_edit_boxes editbox,editbox_end
mouse_edit_box editbox
jmp still
button:
@ -69,38 +69,26 @@ button:
mcall
noclose:
cmp ah,2
jne path_2
push eax
call clear_err
mov al,16
mov ebx,1
mcall
call check_for_error
jmp still
path_2:
cmp ah,3
jne path_3
call clear_err
mov al,16
mov ebx,2
mcall
call check_for_error
jmp still
path_3:
cmp ah,4
jne path_4
call clear_err
mov al,18
mov ebx,6
mov ecx,path3
mcall
call check_for_error
jmp still
path_4:
call clear_err
mov eax,18
mov ebx,6
mov ecx,path4
pop eax
push 16
xor ebx, ebx
inc ebx ; 16.1 = save to /FD/1
cmp ah, 2
je doit
inc ebx ; 16.2 = save to /FD/2
cmp ah, 3
je doit
pop ebx
push 18
mov bl, 6 ; 18.6 = save to specified folder
mov ecx, path3
cmp ah, 4
je doit
mov ecx, path4
doit:
pop eax
mcall
call check_for_error
jmp still
@ -108,56 +96,39 @@ noclose:
key:
mov al,2
mcall
key_edit_boxes editbox,editbox_end
key_edit_box editbox
jmp still
check_for_error: ;Ž¡à ¡®â稪 ®è¨¡®ª
cmp eax,0
jne err1
mov ecx,[sc.work_text]
mov edx,ok
jmp print
err1:
cmp eax,1
jne err3
mov ecx,0xdd2222
mov edx,error11
jmp print
err3:
cmp eax,3
jne err5
mov ecx,0xdd2222
mov edx,error3
jmp print
err5:
cmp eax,5
jne err8
mov ecx,0xdd2222
mov edx,error5
jmp print
err8:
cmp eax,8
jne err9
mov ecx,0xdd2222
mov edx,error8
jmp print
err9:
cmp eax,9
jne err10
mov ecx,0xdd2222
mov edx,error9
jmp print
err10:
cmp eax,10
jne err11
mov ecx,0xdd2222
mov edx,error10
jmp print
err11:
mov ecx,0xdd2222
mov edx,error11
jmp print
mov ecx, [sc.work_text]
mov edx, ok
test eax, eax
jz print
mov ecx, 0xdd2222
add edx, error3 - ok
dec eax
dec eax
jz print
add edx, error5 - error3
dec eax
dec eax
jz print
add edx, error8 - error5
dec eax
dec eax
dec eax
jz print
add edx, error9 - error8
dec eax
jz print
add edx, error10 - error9
dec eax
jz print
add edx, error11 - error10
dec eax
jz print
add edx, aUnknownError - error11
print:
mov eax,4 ;­ ¤¯¨á¨
@ -167,7 +138,7 @@ err10:
ret
clear_err:
mov al,13
mov eax,13
mov ebx,15 shl 16 + 240
mov ecx,145 shl 16 +15
mov edx,[sc.work]
@ -199,7 +170,7 @@ draw_window:
mov edi,title ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ<C5BD>
mcall
draw_edit_boxes editbox,editbox_end,use_f9,procinfo ;à¨á®¢ ­¨¥ edit box'®¢
draw_edit_box editbox,use_f9,procinfo ;à¨á®¢ ­¨¥ edit box'®¢
mov al,13 ;®âà¨á®¢ª  ⥭¥© ª­®¯®ª
mov ebx,194 shl 16 + 60
@ -306,6 +277,7 @@ error8 db '
error9 db '’ ¡«¨æ  FAT à §àã襭 ',0
error10 db '„®áâ㯠§ ¯à¥é¥­',0
error11 db 'Žè¨¡ª  ãáâனá⢠',0
aUnknownError db '<27>¥¨§¢¥áâ­ ï ®è¨¡ª ',0
else
save db ' Save',0
@ -319,6 +291,7 @@ error8 db 'Disk is full',0
error9 db 'FAT table corrupted',0
error10 db 'Access denied',0
error11 db 'Device error',0
aUnknownError db 'Unknown error',0
end if

View File

@ -5,115 +5,80 @@
use32
org 0x0
used_memory = 0x10000
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd I_END ; size of image
dd 0x40000 ; memory for app (256 Kb)
dd 0x40000 ; esp
dd used_memory ; memory for app
dd used_memory ; esp
dd 0x0 , 0x0 ; I_Param , I_Icon
include 'lang.inc'
include '..\..\..\macros.inc'
purge mov ; decrease kpack'ed size
;include 'debug.inc'
START:
mov eax,14
mcall
and eax,0xFFFF0000
mov [top_right_corner],eax
mov eax,40 ; ãáâ ­®¢¨âì ¬ áªã ᮡë⨩
mov ebx,110010b ; ॠ£¨à㥬 ­  ª« ¢¨ âãàã, ¬ëèì, ®âà¨á®¢ªã ä®­ 
mcall
mov eax,14 ; ¯®«ã稬 à §¬¥àë íªà ­ 
bgr_changed:
mov eax,14
mcall
mov [y_max],ax
shr eax,16
mov [x_max],ax
mov [y_max], ax
shr eax, 16
mov [x_max], ax
shl eax, 16
mov [top_right_corner], eax
event: ; ®¡à ¡®â稪 ᮡë⨩ (¢á¥å)
mov eax,26
mov ebx,9
mcall ; ¯®«ãç¨âì ¢à¥¬ï á¨á⥬ë
; mov eax,3
; mcall
mov [evtime],eax ; § ¯®¬­¨âì ¥£®
mov eax,37
mov ebx,2
mcall
cmp eax,3 ; ¯à®¤®«¦¨¬, ¥á«¨ ­ ¦ â  á।­ïï ª­®¯ª  ¬ëè¨
jne still
mov eax,37 ; ¯à®¢¥à¨¬ ª®®à¤¨­ âë
mov ebx,0
mcall
cmp [top_right_corner],eax
je create_setup ; ᮧ¤ ñ¬ ®ª­® ­ áâனª¨, ¥á«¨ ¬ëèì ¢ ¢¥àå­¥¬ ¯à ¢®¬
; 㣫ã íªà ­ 
still: ; ®á­®¢­®© 横« ¯à®£à ¬¬ë
mov eax,23 ; ¦¤ñ¬ ᮡëâ¨ï ¢ â¥ç¥­¨¥ 1 ᥪ㭤ë
mov ebx,100
mcall
bt dword [params],0 ; ssaver works?
jc event
bt dword [params],1 ; setup works?
jc event
cmp eax,2 ; key in buffer ?
je event
cmp eax,5
je event
cmp eax,6
je event
mov eax,26
mov ebx,9
mcall
sub eax,[evtime]
xor edx,edx
mov ebx,60*100 ; ¯®¤¥«¨¬ ­  60*100, ¯®«ã稬 ¢à¥¬ï ¢ ¬¨­ãâ å
div ebx
cmp al,[time]
jb still
; current_time-evtime/100/60 = ¢à¥¬ï ¢ ¬¨­ãâ å á ¯à®è«®£® ᮡëâ¨ï
still:
movzx ebx, [time]
imul ebx, 60*100
mcall 23 ; ¦¤ñ¬ ᮡëâ¨ï ¢ â¥ç¥­¨¥ [time] ¬¨­ãâ
test eax, eax
jz create_ss_thread
cmp al, 2 ; key in buffer?
jz key
cmp al, 5 ; background redraw?
jz bgr_changed
; mouse event
mcall 37,2 ; ¯à®¢¥à¨¬ ª­®¯ª¨
and al, 3
cmp al, 3 ; ­ ¦ âë ®¡¥ ª­®¯ª¨ ¬ëè¨?
jnz still
mcall 37,0 ; ¯à®¢¥à¨¬ ª®®à¤¨­ âë
cmp [top_right_corner], eax
jnz still
create_setup:
test [params], 2
jnz still ; ®ª­® ­ áâ஥ª 㦥 ᮧ¤ ­®
mcall 51,1,sthread,used_memory-0x1000
or [params], 2
jmp still
key:
mcall ; eax = 2
jmp still
create_ss_thread:
test [params], 3
jnz still
call create_ss
jmp still
create_setup:
bt dword [params],1
jc still
mov eax,51
mov ebx,1
mov ecx,sthread
mov edx,0x3F000
mcall
bts dword [params],1
jmp still
create_ss:
mov eax,51
mov ebx,1
mov ecx,thread
mov edx,0x3E000
mcall
bts dword [params],0
create_ss:
mcall 51,1,thread,used_memory-0x2000
or [params], 1
ret
thread:
mov eax,5
mov ebx,eax
mcall
; mov eax,5
; mov ebx,eax
; mcall
mov eax,40
mov ebx,100010b
mcall
@ -133,22 +98,20 @@ still: ;
jmp drawsswin
asminit: ; for "assembler"
mov dword [delay],25
mov eax,58
mov eax,70
mov ebx,fileinfo
mcall
mov [filesize], ebx
asminit1:
mov eax,data_from_file
mov [stringstart],eax
mov [stringstart],data_from_file
mov dword [stringlen],1
newpage:
mov word [stringpos],10
drawsswin:
xor eax,eax
mov ebx,eax
mov ecx,eax
mov bx,[x_max]
mov cx,[y_max]
movzx ebx,[x_max]
movzx ecx,[y_max]
inc ebx
inc ecx
mov edx,0x01000000
@ -160,10 +123,8 @@ still: ;
mov eax,23
mov ebx,[delay]
mcall
cmp eax,2
je thr_end
cmp eax,6
je thr_end
test eax,eax
jnz thr_end
cmp dword [type],0
je tstill
cmp dword [type],24
@ -171,11 +132,7 @@ still: ;
call draw_line
jmp tstill
thr_end:
btr dword [params],0
mov eax,26
mov ebx,9
mcall
mov [evtime],eax
and [params], not 1
or eax,-1
mcall
@ -183,12 +140,15 @@ still: ;
mov edi,[stringstart]
add edi,[stringlen]
dec edi
mov eax,edi
sub eax,data_from_file
cmp eax,10450
lea eax,[edi-data_from_file]
cmp eax,[filesize]
ja asminit1
cmp word [edi],0x0a0d
je addstring
cmp byte [edi],0x0a
jne noaddstring
dec edi
addstring:
add word [stringpos],10
add edi,2
mov [stringstart],edi
@ -211,11 +171,8 @@ still: ;
jmp tstill
draw_line:
xor esi,esi
xor edi,edi
mov si,[x_max]
mov di,[y_max]
movzx esi,[x_max]
movzx edi,[y_max]
mov eax,[addx1]
add [lx1],eax
@ -294,13 +251,12 @@ sstill:
mov eax,10 ; wait here for event
mcall
cmp eax,1 ; redraw request ?
dec eax ; redraw request ?
je sthread
cmp eax,2 ; key in buffer ?
je sstill
cmp eax,3 ; button in buffer ?
je sbutton
dec eax ; key in buffer ?
jne sbutton
mov al,2
mcall
jmp sstill
sbutton: ; button
@ -310,20 +266,20 @@ sstill:
cmp ah,1 ; button id=1 ?
jne snoclose
btr dword [params],1
and [params], not 2
mov eax,-1 ; close this program
mcall
snoclose:
cmp ah,7
jne nosetfl
btc dword [params],0
xor [params], 1
call drawflag
call drawtype
call drawtime
jmp sstill
nosetfl:
bt dword [params],0
jc sstill
test [params], 1
jnz sstill
cmp ah,2
jne notypedown
mov eax,[type]
@ -345,7 +301,7 @@ sstill:
mov al,[time]
cmp al,1
jbe sstill
dec al
dec eax
; das
jmp timeupdn
notimedown:
@ -354,17 +310,16 @@ sstill:
mov al,[time]
cmp al,59 ; 0x59
jae sstill
inc al
inc eax
; daa
jmp timeupdn
notimeup:
cmp ah,6
jne noshow
mov eax,5
mov ebx,150
mov ebx,10;150
mcall
call create_ss
jmp sstill
noshow:
jmp sstill
@ -397,7 +352,7 @@ sdraw_window:
mov edi,title
mcall
mov eax,8
mov al,8
mov ebx,47*65536+10
mov ecx,31*65536+10
mov edx,2
@ -420,19 +375,16 @@ sdraw_window:
inc edx
mcall
mov eax,4 ; function 4 : write text to window
mov al,4 ; function 4 : write text to window
mov ebx,15*65536+33 ; [x start] *65536 + [y start]
mov ecx,0xffffff
mov ecx,0x80ffffff
mov edx,setuptext
mov esi,9
mcall
add ebx,15
add edx,esi
mov esi,30
add edx,10
mcall
mov ebx,169*65536+32
mov edx,buttext
mov esi,4
mcall
call drawtype
@ -450,12 +402,12 @@ drawtype:
mov ebx,80*65536+75
mov ecx,30*65536+12
mov edx,0xffffff
bt dword [params],0
jnc noblue
test [params], 1
jz noblue
mov edx,0x4e00e7
noblue:
mcall
mov eax,4
mov al,4
mov ebx,82*65536+32
xor ecx,ecx
mov edx,typetext
@ -469,12 +421,12 @@ drawtime:
mov ebx,80*65536+15
mov ecx,45*65536+12
mov edx,0xffffff
bt dword [params],0
jnc noblue1
test [params], 1
jz noblue1
mov edx,0x4e00e7
noblue1:
mcall
mov eax,47
mov al,47
mov edx,82*65536+47
xor esi,esi
movzx ecx,byte [time]
@ -489,7 +441,7 @@ drawflag:
mov edx,7
mov esi,0xe0e0e0
mcall
mov eax,4
mov al,4
mov ebx,153*65536+47
xor ecx,ecx
mov esi,1
@ -502,10 +454,11 @@ drawflag:
ret
; DATA AREA
buttext db 'SHOW'
buttext db 'SHOW',0
flag db 'V '
title db 'SCREENSAVER SETUP',0
setuptext db 'TYPE: < >TIME: < > MINUTES NEVER'
setuptext db 'TYPE: < >',0
db 'TIME: < > MINUTES NEVER',0
typetext db 'BLACK SCREENCOLOR LINES ASSEMBLER '
type dd 12
time db 15 ; ¢à¥¬ï ¤® § ¯ã᪠ § áâ ¢ª¨ ¢ ¬¨­ãâ å
@ -527,11 +480,12 @@ stringlen dd 1
stringstart dd 0
stringpos dw 10
params dd 0 ;if bit 0 set-ssaver works if bit 1 set-setup works
params db 0 ;if bit 0 set-ssaver works if bit 1 set-setup works
fileinfo:
dd 0,0,21,data_from_file,work_area
db '/RD/1/SS.ASM',0
; used_memory-0x3000-data_from_file = ~50 Kb with current settings
dd 0,0,0,used_memory-0x3000-data_from_file,data_from_file
db '/RD/1/NETWORK/PPP.ASM',0
I_END:
@ -539,11 +493,9 @@ I_END:
; UNINITIALIZED DATA:
lcolor dd ?
evtime dd ? ; ¢à¥¬ï ¯à¥¤ë¤ã饣® ᮡëâ¨ï
x_max dw ? ; à §¬¥àë íªà ­ 
y_max dw ?
top_right_corner dd ?
work_area:
rb 0x10000
filesize dd ?
data_from_file: