forked from KolibriOS/kolibrios
interim audit for @SS
git-svn-id: svn://kolibrios.org@1745 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8340767676
commit
d408e66db4
@ -1,511 +0,0 @@
|
|||||||
; SCREENSAVER APPLICATION by lisovin@26.ru
|
|
||||||
;
|
|
||||||
; Compile with FASM for Menuet
|
|
||||||
;
|
|
||||||
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 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,40 ; ãáâ ®¢¨âì ¬ áªã ᮡë⨩
|
|
||||||
mov ebx,110010b ; ॠ£¨à㥬 ª« ¢¨ âãàã, ¬ëèì, ®âà¨á®¢ªã ä®
|
|
||||||
mcall
|
|
||||||
|
|
||||||
bgr_changed:
|
|
||||||
|
|
||||||
mov eax,14
|
|
||||||
mcall
|
|
||||||
mov [y_max], ax
|
|
||||||
shr eax, 16
|
|
||||||
mov [x_max], ax
|
|
||||||
shl eax, 16
|
|
||||||
mov [top_right_corner], eax
|
|
||||||
|
|
||||||
mcall 66, 4, 57, 0 ; hot key for {Space}
|
|
||||||
mcall 66, 4, 28, 0 ; hot key for {Enter}
|
|
||||||
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
|
|
||||||
cmp al, 2 ; hot key?
|
|
||||||
jne still ; no hotkey, evenets handling go on
|
|
||||||
xor edx, edx
|
|
||||||
mov dl, ah
|
|
||||||
mov eax, 72
|
|
||||||
mov ebx, 1
|
|
||||||
mov ecx, 2
|
|
||||||
mcall ; transfer key code to active window after interception
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
create_ss_thread:
|
|
||||||
test [params], 3
|
|
||||||
jnz still
|
|
||||||
call create_ss
|
|
||||||
jmp still
|
|
||||||
|
|
||||||
create_ss:
|
|
||||||
mcall 51,1,thread,used_memory-0x2000
|
|
||||||
or [params], 1
|
|
||||||
ret
|
|
||||||
|
|
||||||
thread:
|
|
||||||
; mov eax,5
|
|
||||||
; mov ebx,eax
|
|
||||||
; mcall
|
|
||||||
mov eax,40
|
|
||||||
mov ebx,100010b
|
|
||||||
mcall
|
|
||||||
cmp dword [type],0
|
|
||||||
je drawsswin
|
|
||||||
cmp dword [type],24
|
|
||||||
je asminit
|
|
||||||
mov dword [delay],1
|
|
||||||
mov [lx1],10 ; for "draw line"
|
|
||||||
mov [lx2],40
|
|
||||||
mov [ly1],50
|
|
||||||
mov [ly2],100
|
|
||||||
mov [addx1],1
|
|
||||||
mov [addx2],1
|
|
||||||
mov [addy1],1
|
|
||||||
mov [addy2],1
|
|
||||||
jmp drawsswin
|
|
||||||
asminit: ; for "assembler"
|
|
||||||
mov dword [delay],25
|
|
||||||
mov eax,70
|
|
||||||
mov ebx,fileinfo
|
|
||||||
mcall
|
|
||||||
mov [filesize], ebx
|
|
||||||
asminit1:
|
|
||||||
mov [stringstart],data_from_file
|
|
||||||
mov dword [stringlen],1
|
|
||||||
newpage:
|
|
||||||
mov word [stringpos],10
|
|
||||||
|
|
||||||
drawsswin:
|
|
||||||
xor eax,eax
|
|
||||||
movzx ebx,[x_max]
|
|
||||||
movzx ecx,[y_max]
|
|
||||||
inc ebx
|
|
||||||
inc ecx
|
|
||||||
mov edx,0x01000000
|
|
||||||
mcall
|
|
||||||
mov eax,13
|
|
||||||
xor edx,edx
|
|
||||||
mcall
|
|
||||||
tstill:
|
|
||||||
mov eax,23
|
|
||||||
mov ebx,[delay]
|
|
||||||
mcall
|
|
||||||
test eax,eax
|
|
||||||
jnz thr_end
|
|
||||||
cmp dword [type],0
|
|
||||||
je tstill
|
|
||||||
cmp dword [type],24
|
|
||||||
je drawssasm
|
|
||||||
call draw_line
|
|
||||||
jmp tstill
|
|
||||||
thr_end:
|
|
||||||
and [params], not 1
|
|
||||||
or eax,-1
|
|
||||||
mcall
|
|
||||||
|
|
||||||
drawssasm:
|
|
||||||
mov edi,[stringstart]
|
|
||||||
add edi,[stringlen]
|
|
||||||
dec edi
|
|
||||||
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
|
|
||||||
mov dword [stringlen],1
|
|
||||||
mov ax,[stringpos]
|
|
||||||
cmp ax,[y_max]
|
|
||||||
jb tstill
|
|
||||||
jmp newpage
|
|
||||||
noaddstring:
|
|
||||||
mov eax,4
|
|
||||||
mov ebx,10*65536
|
|
||||||
mov bx,[stringpos]
|
|
||||||
mov ecx,0x104ba010
|
|
||||||
mov edx,[stringstart]
|
|
||||||
mov esi,[stringlen]
|
|
||||||
mcall
|
|
||||||
inc dword [stringlen]
|
|
||||||
cmp byte [edi],byte ' '
|
|
||||||
je drawssasm
|
|
||||||
jmp tstill
|
|
||||||
|
|
||||||
draw_line:
|
|
||||||
movzx esi,[x_max]
|
|
||||||
movzx edi,[y_max]
|
|
||||||
|
|
||||||
mov eax,[addx1]
|
|
||||||
add [lx1],eax
|
|
||||||
mov eax,[addy1]
|
|
||||||
add [ly1],eax
|
|
||||||
|
|
||||||
mov eax,[addx2]
|
|
||||||
add [lx2],eax
|
|
||||||
mov eax,[addy2]
|
|
||||||
add [ly2],eax
|
|
||||||
|
|
||||||
cmp [lx1],1
|
|
||||||
jge dl1
|
|
||||||
mov [addx1],1
|
|
||||||
dl1:
|
|
||||||
cmp [lx2],1
|
|
||||||
jge dl2
|
|
||||||
mov [addx2],1
|
|
||||||
dl2:
|
|
||||||
cmp [lx1],esi
|
|
||||||
jbe dl3
|
|
||||||
mov [addx1],0xffffffff
|
|
||||||
dl3:
|
|
||||||
cmp [lx2],esi
|
|
||||||
jbe dl4
|
|
||||||
mov [addx2],0xffffffff
|
|
||||||
dl4:
|
|
||||||
|
|
||||||
cmp [ly1],1
|
|
||||||
jge dl5
|
|
||||||
mov [addy1],1
|
|
||||||
dl5:
|
|
||||||
cmp [ly2],2
|
|
||||||
jge dl6
|
|
||||||
mov [addy2],1
|
|
||||||
dl6:
|
|
||||||
cmp [ly1],edi
|
|
||||||
jbe dl7
|
|
||||||
mov [addy1],-1
|
|
||||||
dl7:
|
|
||||||
cmp [ly2],edi
|
|
||||||
jbe dl8
|
|
||||||
mov [addy2],-1
|
|
||||||
dl8:
|
|
||||||
|
|
||||||
mov eax,[lx2]
|
|
||||||
cmp [lx1],eax
|
|
||||||
jz dnol
|
|
||||||
|
|
||||||
mov bx,word [lx1]
|
|
||||||
shl ebx,16
|
|
||||||
mov bx,word [lx2]
|
|
||||||
|
|
||||||
mov cx,word [ly1]
|
|
||||||
shl ecx,16
|
|
||||||
mov cx,word [ly2]
|
|
||||||
|
|
||||||
mov eax,38
|
|
||||||
mov edx,[lcolor]
|
|
||||||
and edx,0xffffff
|
|
||||||
mcall
|
|
||||||
|
|
||||||
dnol:
|
|
||||||
|
|
||||||
add [lcolor],0x010201
|
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
sthread: ; start of execution
|
|
||||||
|
|
||||||
call sdraw_window
|
|
||||||
|
|
||||||
sstill:
|
|
||||||
|
|
||||||
mov eax,10 ; wait here for event
|
|
||||||
mcall
|
|
||||||
|
|
||||||
dec eax ; redraw request ?
|
|
||||||
je sthread
|
|
||||||
dec eax ; key in buffer ?
|
|
||||||
jne sbutton
|
|
||||||
mov al,2
|
|
||||||
mcall
|
|
||||||
jmp sstill
|
|
||||||
|
|
||||||
sbutton: ; button
|
|
||||||
mov eax,17 ; get id
|
|
||||||
mcall
|
|
||||||
|
|
||||||
cmp ah,1 ; button id=1 ?
|
|
||||||
jne snoclose
|
|
||||||
|
|
||||||
and [params], not 2
|
|
||||||
mov eax,-1 ; close this program
|
|
||||||
mcall
|
|
||||||
snoclose:
|
|
||||||
cmp ah,7
|
|
||||||
jne nosetfl
|
|
||||||
xor [params], 1
|
|
||||||
call drawflag
|
|
||||||
call drawtype
|
|
||||||
call drawtime
|
|
||||||
jmp sstill
|
|
||||||
nosetfl:
|
|
||||||
test [params], 1
|
|
||||||
jnz sstill
|
|
||||||
cmp ah,2
|
|
||||||
jne notypedown
|
|
||||||
mov eax,[type]
|
|
||||||
test eax,eax
|
|
||||||
je sstill
|
|
||||||
sub eax,12
|
|
||||||
jmp typeupdn
|
|
||||||
notypedown:
|
|
||||||
cmp ah,3
|
|
||||||
jne notypeup
|
|
||||||
mov eax,[type]
|
|
||||||
cmp eax,24
|
|
||||||
jae sstill
|
|
||||||
add eax,12
|
|
||||||
jmp typeupdn
|
|
||||||
notypeup:
|
|
||||||
cmp ah,4
|
|
||||||
jne notimedown
|
|
||||||
mov al,[time]
|
|
||||||
cmp al,1
|
|
||||||
jbe sstill
|
|
||||||
dec eax
|
|
||||||
; das
|
|
||||||
jmp timeupdn
|
|
||||||
notimedown:
|
|
||||||
cmp ah,5
|
|
||||||
jne notimeup
|
|
||||||
mov al,[time]
|
|
||||||
cmp al,59 ; 0x59
|
|
||||||
jae sstill
|
|
||||||
inc eax
|
|
||||||
; daa
|
|
||||||
jmp timeupdn
|
|
||||||
notimeup:
|
|
||||||
cmp ah,6
|
|
||||||
jne noshow
|
|
||||||
mov eax,5
|
|
||||||
mov ebx,10;150
|
|
||||||
mcall
|
|
||||||
call create_ss
|
|
||||||
noshow:
|
|
||||||
jmp sstill
|
|
||||||
|
|
||||||
timeupdn:
|
|
||||||
mov [time],al
|
|
||||||
call drawtime
|
|
||||||
jmp sstill
|
|
||||||
typeupdn:
|
|
||||||
mov [type],eax
|
|
||||||
call drawtype
|
|
||||||
jmp sstill
|
|
||||||
|
|
||||||
; *********************************************
|
|
||||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
|
||||||
; *********************************************
|
|
||||||
|
|
||||||
|
|
||||||
sdraw_window:
|
|
||||||
|
|
||||||
|
|
||||||
mov eax,12 ; function 12:tell os about windowdraw
|
|
||||||
mov ebx,1 ; 1, start of draw
|
|
||||||
mcall
|
|
||||||
|
|
||||||
; DRAW WINDOW
|
|
||||||
xor eax,eax ; function 0 : define and draw window
|
|
||||||
mov ebx,100*65536+215 ; [x start] *65536 + [x size]
|
|
||||||
mov ecx,100*65536+70 ; [y start] *65536 + [y size]
|
|
||||||
mov edx,0x13400088 ; color of work area RRGGBB,8->color gl
|
|
||||||
mov edi,title
|
|
||||||
mcall
|
|
||||||
|
|
||||||
mov al,8
|
|
||||||
mov ebx,47*65536+10
|
|
||||||
mov ecx,31*65536+10
|
|
||||||
mov edx,2
|
|
||||||
mov esi,0x702050
|
|
||||||
mcall
|
|
||||||
push ebx
|
|
||||||
add ebx,13*65536
|
|
||||||
mov edi,ebx
|
|
||||||
inc edx
|
|
||||||
mcall
|
|
||||||
pop ebx
|
|
||||||
add ecx,15*65536
|
|
||||||
inc edx
|
|
||||||
mcall
|
|
||||||
mov ebx,edi
|
|
||||||
inc edx
|
|
||||||
mcall
|
|
||||||
mov ebx,160*65536+40
|
|
||||||
mov ecx,28*65536+14
|
|
||||||
inc edx
|
|
||||||
mcall
|
|
||||||
|
|
||||||
mov al,4 ; function 4 : write text to window
|
|
||||||
mov ebx,15*65536+33 ; [x start] *65536 + [y start]
|
|
||||||
mov ecx,0x80ffffff
|
|
||||||
mov edx,setuptext
|
|
||||||
mcall
|
|
||||||
add ebx,15
|
|
||||||
add edx,10
|
|
||||||
mcall
|
|
||||||
mov ebx,169*65536+32
|
|
||||||
mov edx,buttext
|
|
||||||
mcall
|
|
||||||
|
|
||||||
call drawtype
|
|
||||||
call drawtime
|
|
||||||
call drawflag
|
|
||||||
|
|
||||||
mov eax,12 ; function 12:tell os about windowdraw
|
|
||||||
mov ebx,2 ; 2, end of draw
|
|
||||||
mcall
|
|
||||||
|
|
||||||
ret
|
|
||||||
|
|
||||||
drawtype:
|
|
||||||
mov eax,13
|
|
||||||
mov ebx,80*65536+75
|
|
||||||
mov ecx,30*65536+12
|
|
||||||
mov edx,0xffffff
|
|
||||||
test [params], 1
|
|
||||||
jz noblue
|
|
||||||
mov edx,0x4e00e7
|
|
||||||
noblue:
|
|
||||||
mcall
|
|
||||||
mov al,4
|
|
||||||
mov ebx,82*65536+32
|
|
||||||
xor ecx,ecx
|
|
||||||
mov edx,typetext
|
|
||||||
add edx,[type]
|
|
||||||
mov esi,12
|
|
||||||
mcall
|
|
||||||
ret
|
|
||||||
|
|
||||||
drawtime:
|
|
||||||
mov eax,13
|
|
||||||
mov ebx,80*65536+15
|
|
||||||
mov ecx,45*65536+12
|
|
||||||
mov edx,0xffffff
|
|
||||||
test [params], 1
|
|
||||||
jz noblue1
|
|
||||||
mov edx,0x4e00e7
|
|
||||||
noblue1:
|
|
||||||
mcall
|
|
||||||
mov al,47
|
|
||||||
mov edx,82*65536+47
|
|
||||||
xor esi,esi
|
|
||||||
movzx ecx,byte [time]
|
|
||||||
mov ebx,0x00020000
|
|
||||||
mcall
|
|
||||||
ret
|
|
||||||
|
|
||||||
drawflag:
|
|
||||||
mov eax,8
|
|
||||||
mov ebx,150*65536+10
|
|
||||||
mov ecx,45*65536+10
|
|
||||||
mov edx,7
|
|
||||||
mov esi,0xe0e0e0
|
|
||||||
mcall
|
|
||||||
mov al,4
|
|
||||||
mov ebx,153*65536+47
|
|
||||||
xor ecx,ecx
|
|
||||||
mov esi,1
|
|
||||||
mov edx,flag
|
|
||||||
bt dword [params],0
|
|
||||||
jc setf
|
|
||||||
inc edx
|
|
||||||
setf:
|
|
||||||
mcall
|
|
||||||
ret
|
|
||||||
|
|
||||||
; DATA AREA
|
|
||||||
buttext db 'SHOW',0
|
|
||||||
flag db 'V '
|
|
||||||
title db 'SCREENSAVER SETUP',0
|
|
||||||
setuptext db 'TYPE: < >',0
|
|
||||||
db 'TIME: < > MINUTES NEVER',0
|
|
||||||
typetext db 'BLACK SCREENCOLOR LINES ASSEMBLER '
|
|
||||||
type dd 12
|
|
||||||
time db 15 ; ¢à¥¬ï ¤® § ¯ã᪠§ áâ ¢ª¨ ¢ ¬¨ãâ å
|
|
||||||
delay dd 100
|
|
||||||
|
|
||||||
lx1 dd 10
|
|
||||||
lx2 dd 40
|
|
||||||
|
|
||||||
ly1 dd 50
|
|
||||||
ly2 dd 100
|
|
||||||
|
|
||||||
addx1 dd 1
|
|
||||||
addx2 dd 1
|
|
||||||
|
|
||||||
addy1 dd 1
|
|
||||||
addy2 dd 1
|
|
||||||
|
|
||||||
stringlen dd 1
|
|
||||||
stringstart dd 0
|
|
||||||
stringpos dw 10
|
|
||||||
|
|
||||||
params db 0 ;if bit 0 set-ssaver works if bit 1 set-setup works
|
|
||||||
|
|
||||||
fileinfo:
|
|
||||||
; 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 '/sys/NETWORK/PPP.ASM',0
|
|
||||||
|
|
||||||
I_END:
|
|
||||||
|
|
||||||
|
|
||||||
; UNINITIALIZED DATA:
|
|
||||||
|
|
||||||
lcolor dd ?
|
|
||||||
x_max dw ? ; à §¬¥àë íªà
|
|
||||||
y_max dw ?
|
|
||||||
|
|
||||||
top_right_corner dd ?
|
|
||||||
filesize dd ?
|
|
||||||
data_from_file:
|
|
@ -1,5 +0,0 @@
|
|||||||
@erase lang.inc
|
|
||||||
@echo lang fix en >lang.inc
|
|
||||||
@fasm @ss.asm @ss
|
|
||||||
@erase lang.inc
|
|
||||||
@pause
|
|
@ -1,5 +0,0 @@
|
|||||||
@erase lang.inc
|
|
||||||
@echo lang fix ru >lang.inc
|
|
||||||
@fasm @ss.asm @ss
|
|
||||||
@erase lang.inc
|
|
||||||
@pause
|
|
Loading…
Reference in New Issue
Block a user