Subversion Repositories Kolibri OS

Rev

Rev 524 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 524 Rev 529
1
include '..\..\macros.inc'
1
include '..\..\macros.inc'
2
use32
2
use32
3
        db      'MENUET01'
3
        db      'MENUET01'
4
        dd      1
4
        dd      1
5
        dd      start
5
        dd      start
6
        dd      i_end
6
        dd      i_end
7
        dd      mem, mem
7
        dd      mem, mem
8
        dd      0, 0
8
        dd      0, 0
9
 
9
 
10
start:
10
start:
11
        push    70
11
        push    70
12
        pop     eax
12
        pop     eax
13
        mov     ebx, fileinfo
13
        mov     ebx, fileinfo
14
        mcall
14
        mcall
15
        cmp     ebx, max_file_size
15
        cmp     ebx, max_file_size
16
        jz      exit
16
        jz      exit
17
        cmp     ebx, -1
17
        cmp     ebx, -1
18
        jnz     @f
18
        jnz     @f
19
exit:
19
exit:
20
        or      eax, -1
20
        or      eax, -1
21
        mcall
21
        mcall
22
@@:
22
@@:
23
        mov     esi, filebuf
23
        mov     esi, filebuf
24
        xor     ecx, ecx
24
        xor     ecx, ecx
25
scan1l1:
25
scan1l1:
26
        or      edi, -1
26
        or      edi, -1
27
scan1:
27
scan1:
28
        inc     edi
28
        inc     edi
29
        lodsb
29
        lodsb
30
        test    al, al
30
        test    al, al
31
        jz      scan1done
31
        jz      scan1done
32
        cmp     al, 13
32
        cmp     al, 13
33
        jz      newline
33
        jz      newline
34
        cmp     al, 10
34
        cmp     al, 10
35
        jnz     scan1
35
        jnz     scan1
36
newline:
36
newline:
37
        test    edi, edi
37
        test    edi, edi
38
        jz      scan1l1
38
        jz      scan1l1
39
        inc     ecx
39
        inc     ecx
40
        jmp     scan1l1
40
        jmp     scan1l1
41
scan1done:
41
scan1done:
42
        test    edi, edi
42
        test    edi, edi
43
        jz      @f
43
        jz      @f
44
        inc     ecx
44
        inc     ecx
45
@@:
45
@@:
46
        jecxz   exit
46
        jecxz   exit
47
        push    3
47
        push    3
48
        pop     eax
48
        pop     eax
49
        mcall
49
        mcall
50
        ror     eax, 16
50
        ror     eax, 16
51
        mov     edx, 1024
51
        mov     edx, 1024
52
@@:
52
@@:
53
        sub     eax, 0x43ab45b5
53
        sub     eax, 0x43ab45b5
54
        ror     eax, 1
54
        ror     eax, 1
55
        xor     eax, 0x32c4324f
55
        xor     eax, 0x32c4324f
56
        ror     eax, 1
56
        ror     eax, 1
57
        dec     edx
57
        dec     edx
58
        jnz     @b
58
        jnz     @b
59
        div     ecx
59
        div     ecx
60
; use edx as random index
60
; use edx as random index
61
        mov     esi, filebuf
61
        mov     esi, filebuf
62
scan2l1:
62
scan2l1:
63
        push    esi
63
        push    esi
64
        or      edi, -1
64
        or      edi, -1
65
scan2:
65
scan2:
66
        inc     edi
66
        inc     edi
67
        lodsb
67
        lodsb
68
        test    al, al
68
        test    al, al
69
        jz      newline2
69
        jz      newline2
70
        cmp     al, 13
70
        cmp     al, 13
71
        jz      newline2
71
        jz      newline2
72
        cmp     al, 10
72
        cmp     al, 10
73
        jnz     scan2
73
        jnz     scan2
74
newline2:
74
newline2:
75
        pop     eax
75
        pop     eax
76
        test    edi, edi
76
        test    edi, edi
77
        jz      scan2l1
77
        jz      scan2l1
78
        dec     edx
78
        dec     edx
79
        jns     scan2l1
79
        jns     scan2l1
80
        mov     byte [esi-1], 0
80
        mov     byte [esi-1], 0
81
; set eax (-> ASCIIZ string) as skin
81
; set eax (-> ASCIIZ string) as skin
82
        mov     ecx, eax
82
        mov     ecx, eax
83
        push    48
83
        push    48
84
        pop     eax
84
        pop     eax
85
        mov     bl, 8
85
        mov     bl, 8
86
        mcall
86
        mcall
87
        jmp     exit
87
        jmp     exit
88
 
88
 
89
fileinfo:
89
fileinfo:
90
        dd      0
90
        dd      0
91
        dq      0
91
        dq      0
92
        dd      max_file_size
92
        dd      max_file_size
93
        dd      filebuf
93
        dd      filebuf
94
        db      '/rd/1/skinsel.dat',0
94
        db      '/sys/skinsel.dat',0
95
i_end:
95
i_end:
96
max_file_size = 0x1000 - 0x40 - $
96
max_file_size = 0x1000 - 0x40 - $
97
filebuf:
97
filebuf:
98
        rb      max_file_size
98
        rb      max_file_size
99
; stack
99
; stack
100
        rb      0x40
100
        rb      0x40
101
mem:
101
mem: