forked from KolibriOS/kolibrios
87 lines
2.0 KiB
NASM
87 lines
2.0 KiB
NASM
|
use32
|
||
|
org 0
|
||
|
db 'MENUET01'
|
||
|
dd 0x01,start,i_end,e_end,e_end,0,0
|
||
|
|
||
|
include 'proc32.inc'
|
||
|
include 'macros.inc'
|
||
|
include 'dll.inc'
|
||
|
include 'debug-fdo.inc'
|
||
|
|
||
|
__DEBUG__ = 1
|
||
|
__DEBUG_LEVEL__ = 1
|
||
|
|
||
|
DEFAULT_TIMEOUT_MINS = 15
|
||
|
|
||
|
start:
|
||
|
mcall 68, 11
|
||
|
mcall 40, EVM_KEY + EVM_BACKGROUND + EVM_MOUSE
|
||
|
|
||
|
stdcall dll.Load,@IMPORT
|
||
|
test eax, eax
|
||
|
jnz exit
|
||
|
|
||
|
invoke ini.get_int, ini_file, ini_section, ini_key_timeout, DEFAULT_TIMEOUT_MINS
|
||
|
imul eax, 60*100 ; cs
|
||
|
mov [timeout], eax
|
||
|
|
||
|
; r1647 by Nasarus
|
||
|
mcall 66, 4, 57, 0 ; hot key for {Space}
|
||
|
mcall 66, 4, 28, 0 ; hot key for {Enter}
|
||
|
|
||
|
still:
|
||
|
mcall 23, [timeout]
|
||
|
test eax, eax
|
||
|
jz run_saver
|
||
|
cmp eax, 2 ; key
|
||
|
jnz still
|
||
|
mcall
|
||
|
; r1647 by Nasarus
|
||
|
cmp al, 2 ; hot key?
|
||
|
jnz still ; no hotkey, evenets handling go on
|
||
|
movzx edx, ah
|
||
|
mcall 72, 1, 2 ; transfer key code to active window after interception
|
||
|
jmp still
|
||
|
run_saver:
|
||
|
invoke ini.get_str, ini_file, ini_section, ini_key_program, ini_program_buf, ini_program_buf.size, ini_program_default
|
||
|
; run actual screensaver
|
||
|
mcall 70, f70
|
||
|
cmp eax, 0
|
||
|
jg exit
|
||
|
neg eax
|
||
|
DEBUGF 1, 'Screen saver not found: %d: %s\n', eax, ini_program_buf
|
||
|
exit:
|
||
|
mcall -1
|
||
|
|
||
|
|
||
|
sz ini_file, '/sys/settings/system.ini',0
|
||
|
sz ini_section, 'screensaver',0
|
||
|
sz ini_key_timeout, 'timeout',0
|
||
|
timeout dd ?
|
||
|
sz ini_key_program, 'program',0
|
||
|
sz ini_program_default, '/sys/demos/spiral',0
|
||
|
sz program_params, '@ss',0
|
||
|
|
||
|
f70: ; run
|
||
|
dd 7, 0, program_params, 0, 0
|
||
|
db 0
|
||
|
dd ini_program_buf
|
||
|
|
||
|
align 4
|
||
|
@IMPORT:
|
||
|
|
||
|
library \
|
||
|
libini , 'libini.obj'
|
||
|
|
||
|
import libini, \
|
||
|
ini.get_str, 'ini_get_str', \
|
||
|
ini.get_int, 'ini_get_int'
|
||
|
|
||
|
include_debug_strings
|
||
|
i_end:
|
||
|
|
||
|
align 4
|
||
|
sz ini_program_buf, 1024 dup(?)
|
||
|
rb 0x100
|
||
|
e_end:
|