Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4011 0CodErr 1
ORG 0
2
BITS 32
3
; ---------------------------------------------------------------------------- ;
4
STACK_SIZE     equ 256
5
; ---------------------------------------------------------------------------- ;
6
MENUET01       db 'MENUET01'
7
version        dd 1
8
program.start  dd start_
9
program.end    dd end_
10
program.memory dd end_ + STACK_SIZE
11
program.stack  dd end_ + STACK_SIZE
12
program.params dd 0
13
program.path   dd 0
14
; ---------------------------------------------------------------------------- ;
15
Partition:
16
.full_space    dd 0
17
.free_space    dd 0
18
; ---------------------------------------------------------------------------- ;
19
FS_Info:
20
.cluster_size  dd 0
21
.all_clusters  dd 0
22
.free_clusters dd 0
23
; ---------------------------------------------------------------------------- ;
24
sz_caption       db "RDInfo",0
25
sz_all_clusters  db "All clusters:",0
26
sz_free_clusters db "Free clusters:",0
27
sz_cluster_size  db "Cluster size:",0
28
sz_full_space    db "Full space(kb):",0
29
sz_free_space    db "Free space(kb):",0
30
; ---------------------------------------------------------------------------- ;
31
%define buffer [esp + 8]
32
%define disk   [esp + 4]
33
get_file_system_info:
34
        mov    edx, esp
35
        sub    edx, 24
36
        mov    [edx], dword 15
37
        mov    eax, disk
38
        mov    [edx + 20], eax
39
        mov    eax, 58
40
        lea    ebx, [edx]
41
        int    64
42
        mov    esi, eax
43
        mov    edx, [edx]
44
        mov    eax, buffer
45
        mov    [eax], edx
46
        mov    [eax + 4], ebx
47
        mov    [eax + 8], ecx
48
        mov    eax, esi
49
        ret    8
50
; ---------------------------------------------------------------------------- ;
51
start_:
52
; set.event:
53
        mov    eax, 40
54
        mov    ebx, 5 ; redraw + button
55
        int    64
56
on_redraw:
57
; redraw.start
58
        mov    eax, 12
59
        mov    ebx, 1
60
        int    64
61
; draw.window
62
        xor    eax, eax
63
        mov    ebx, 200
64
        mov    ecx, 100
65
        mov    edx, 0x34CCDDEE
66
        mov    edi, sz_caption
67
        int    64
68
; get.info
69
        push   dword FS_Info
70
        push   dword "/rd" ; ramdisk
71
        call   get_file_system_info
72
 
73
        mov    eax, [FS_Info.all_clusters]
74
        mul    dword [FS_Info.cluster_size]
75
        shr    eax, 10
76
        mov    [Partition.full_space], eax
77
 
78
        mov    eax, [FS_Info.free_clusters]
79
        mul    dword [FS_Info.cluster_size]
80
        shr    eax, 10
81
        mov    [Partition.free_space], eax
82
; draw.info
83
        mov    eax, 4
84
        mov    ecx, 0xC0000000
85
        mov    edi, 0x00CCDDEE
86
 
87
        mov    ebx, (10 << 16) | 10
88
        mov    edx, sz_all_clusters
89
        int    64
90
        mov    ebx, (10 << 16) | 20
91
        mov    edx, sz_free_clusters
92
        int    64
93
        mov    ebx, (10 << 16) | 30
94
        mov    edx, sz_cluster_size
95
        int    64
96
        mov    ebx, (10 << 16) | 40
97
        mov    edx, sz_full_space
98
        int    64
99
        mov    ebx, (10 << 16) | 50
100
        mov    edx, sz_free_space
101
        int    64
102
 
103
        mov    eax, 47
104
        mov    ebx, (10 << 16) | 0x80000000
105
        mov    esi, ecx
106
 
107
        mov    ecx, [FS_Info.all_clusters]
108
        mov    edx, (110 << 16) | 10
109
        int    64
110
        mov    ecx, [FS_Info.free_clusters]
111
        mov    edx, (110 << 16) | 20
112
        int    64
113
        mov    ecx, [FS_Info.cluster_size]
114
        mov    edx, (110 << 16) | 30
115
        int    64
116
        mov    ecx, [Partition.full_space]
117
        mov    edx, (110 << 16) | 40
118
        int    64
119
        mov    ecx, [Partition.free_space]
120
        mov    edx, (110 << 16) | 50
121
        int    64
122
; redraw.finish
123
        mov    eax, 12
124
        mov    ebx, 2
125
        int    64
126
; wait.event
127
        mov    eax, 10
128
        int    64
129
        dec    eax
130
        jz     on_redraw
131
; program.terminate:
132
        or     eax, -1
133
        int    64
134
; ---------------------------------------------------------------------------- ;
135
end_: