/programs/cmm/tmpdisk/compile_en.bat |
---|
0,0 → 1,9 |
del lang.h |
echo #define LANG_ENG 1 >lang.h |
..\C--\C-- tmpdisk.c |
del tmpdisk |
rename tmpdisk.com tmpdisk |
rem ..\C--\kpack tmpdisk |
pause |
del warning.txt |
/programs/cmm/tmpdisk/compile_ru.bat |
---|
0,0 → 1,9 |
del lang.h |
echo #define LANG_RUS 1 >lang.h |
..\C--\C-- tmpdisk.c /lst |
del tmpdisk |
rename tmpdisk.com tmpdisk |
rem ..\C--\kpack tmpdisk |
pause |
del warning.txt |
/programs/cmm/tmpdisk/icons.ico |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/cmm/tmpdisk/icons.raw |
---|
0,0 → 1,5 |
º;ÔCº;ÔCÔCÔC)æWÔC)æW)æW)æW)æWµ9º;ÔCº;ÔCÔC)æW)æWº;µ9º;º;ÿÿÿÿÿÿº;)æWÔC)æWµ9º;ÔCµ9ÿÿÿÿÿÿº;ÔCÔCÔCµ9ÿÿÿÿÿÿÔCµ9ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº;º;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔCµ9ÿÿÿÿÿÿÔCµ9º;º;º;ÿÿÿÿÿÿÔCº;º;ÔCµ9º;º;º;ÿÿÿÿÿÿÔCº;ÔCº;º;µ9º;º;º;µ9º;ÔC§4´9 2µ9µ9º;µ9µ9µ9º;µ9º;)))))))))))))))@ ßKñ@ ßKñKñKñg7óKñg7óg7óg7óg7ó))> Ù@ ßKñ@ ß@ ß@ ßKñ@ ßKñKñg7óg7ó))@ ß> Ù@ ß@ ß@ ßKñ@ ß@ ßKñg7óKñg7ó))> Ù@ ßKñ> Ù@ ß@ ß@ ßKñ@ ß@ ß@ ßKñ))> Ù2´2´2´2´2´2´2´2´2´2´Kñ))> Ù2´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2´@ ß))@ ß2´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2´Kñ))> Ù2´2´2´2´2´2´2´2´2´2´Kñ))> Ù@ ß@ ß@ ß> Ù@ ß@ ß> ÙKñ@ ß@ ßKñ))> Ù@ ß@ ß@ ß@ ß@ ß@ ß@ ßKñ@ ßKñ@ ß))@ ß> Ù@ ß@ ß@ ß> Ù@ ß@ ß@ ß> Ù@ ßKñ))9Ë> Ù8Ä> Ù> Ù@ ß> Ù> Ù> Ù@ ß> Ù@ ß)))))))))))))))X}X}X}X}X}X}X}X}X}X}X}X}X}X}X}ºë5Ëõ¶è5Ëõ5Ëõ4Êô_àÿ3Êô^ßþ]Þþ\Þþ^âÿX}X}¤ë³ä4Çð²ã²ã±ã3Æð±ã3Çñ1Çñ³ä]ßþX}X}¸é æ³ä³ä³ä5Çð³äµæÚZ |
¿^áÿX}X}¥ëµæ6Êó¢è´å´äµæÛTyÿÿÿY_ãÿX}X}¦íÀZ z°Û·èÛTyÿÿÿr ¶ |
+´å³ä5ËõX}X}¤ë´äµæÀkÿÿÿkÀ"¶ä³ä²ã5ËõX}X}¤ë´ä´åµæ ¯[ ¯ß·æ³ä4Çð¶èX}X}¸é¡æ´ä´å¶æ³ä´ä³ä æ³ä5ËõX}X}àë â¥ë¥ë¹ê©é¥ë¤ë¸é¤ëºëX}X}X}X}X}X}X}X}X}X}X}X}X}X}X}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlggWPPWPPWPPWPPWPPWPPWPPWPPWPPWPPWPPlggÿÿÿWPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWPPÿÿÿWPP×ÒÓåââåââåââåââåââåââåââåââåââ×ÒÓWPPÿÿÿWPP×ÒÓåââåââåââåââåââåââåââåââåââ×ÒÓWPPÿÿÿWPP«¢£«¢£«¢£«¢£«¢£«¢£«¢£«¢£«¢£«¢£«¢£WPPÿÿÿWPPWPPWPPWPPWPPWPPWPPWPPWPPWPPWPPWPPWPPÿÿÿÿÿÿWPPÿÿÿWPPÿÿÿWPPÿÿÿWPPÿÿÿWPPÿÿÿWPPÿÿÿÿÿÿÿÿÿWPPÿÿÿWPPÿÿÿWPPÿÿÿWPPÿÿÿWPPÿÿÿWPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ |
\ No newline at end of file |
/programs/cmm/tmpdisk/t_console.c |
---|
0,0 → 1,87 |
///////////////////////////////////////////////////////////////////////////////////////// |
///////////////////////// êîíñîëü //////////////////// |
///////////////////////////////////////////////////////////////////////////////////////// |
/*#ifdef LANG_RUS |
char *rezult_text[]={ |
"îïåðàöèÿ óñïåøíî çàâåðøåíà"w, |
"íåèçâåñòíûé IOCTL, íåâåðíûé ðàçìåð ïðåäîñòàâëÿåìûõ äàííûõ..."w, |
"íîìåð äèñêà äîëæåí áûòü îò 0 äî 9"w, |
"ðàçìåð ñîçäàâàåìîãî äèñêà ñëèøêîì âåëèê"w, |
"ðàçìåð ñîçäàâàåìîãî äèñêà ñëèøêîì ìàë"w, |
"îøèáêà âûäåëåíèÿ ïàìÿòè"w, |
"íåèçâåñòíàÿ îøèáêà O_o"w, |
0}; |
#else*/ |
char *rezult_text[]={ |
"operation compleated successfully", |
"unknown IOCTL code, wrong input/output size...", |
"DiskId must be from 0 to 9", |
"DiskSize is too large", |
"DiskSize is too small", |
"memory allocation failed", |
"unknown error O_o", |
0}; |
//#endif |
void Console_Work() |
{ |
unsigned int disk_size, driver_rezult; |
char size_t[256]; |
strlwr(#param); |
switch (param[0]) |
{ |
case '?': //ïîìîùü ïî êîììàíäàì |
case 'h': |
debug("tmpdisk command line parameters:"); |
debug("a[number]s[size in MB] - add RAM disk"); |
debug("d[number] - delete RAM disk"); |
ExitProcess(); |
break; |
case 'd': //óäàëèòü äèñê |
debug("trying to delete disk"); |
del_disk.DiskId = param[1]-'0'; |
ioctl.handle = driver_handle; |
ioctl.io_code = DEV_DEL_DISK; |
ioctl.input = #del_disk; |
ioctl.inp_size = sizeof(del_disk); |
ioctl.output = 0; |
ioctl.out_size = 0; |
break; |
case 'a': //äîáàâèòü äèñê |
debug("trying to add disk"); |
disk_size= strchr(#param, 's'); |
if (!disk_size) |
{ |
add_disk.DiskSize = GetFreeRAM() / 5; |
debug("disk size is not specified"); |
strcpy(#size_t, "10% from free RAM will be used, new DiskSize: "); |
driver_rezult=itoa(add_disk.DiskSize/2048); |
strcat(#size_t, driver_rezult); |
//strcat(#size_t, itoa(add_disk.DiskSize/2048)); |
strcat(#size_t, " MB"); |
debug(#size_t); |
} |
else |
add_disk.DiskSize = atoi(#param+disk_size)*2048; |
add_disk.DiskId = param[1]-'0'; |
ioctl.handle = driver_handle; |
ioctl.io_code = DEV_ADD_DISK; |
ioctl.input = #add_disk; |
ioctl.inp_size = sizeof(add_disk); |
ioctl.output = 0; |
ioctl.out_size = 0; |
break; |
default: |
debug("unknown command line parameters"); |
debug("use 'h' or '?' for help"); |
ExitProcess(); |
} |
driver_rezult = RuleDriver(#ioctl); |
if (driver_rezult<7) debug(rezult_text[driver_rezult]); |
} |
/programs/cmm/tmpdisk/t_window.c |
---|
0,0 → 1,266 |
#include "..\lib\figures.h" |
#include "..\lib\mem.h" |
#include "..\lib\dll.h" |
#include "..\lib\edit_box_lib.h" |
#ifdef LANG_RUS |
unsigned char *but_text[]={ |
"Äîáàâèòü äèñê [F2]"w, |
"Óäàëèòü äèñê [Del]"w, |
"Äîáàâèòü [Ctrl+Enter]"w, |
0}; |
?define INTRO_TEXT_1 "Çäåñü áóäåò îòîáðàæàòüñÿ ñïèñîê"w |
?define INTRO_TEXT_2 "âèðòóàëüíûõ äèñêîâ â ñèñòåìå."w |
?define INTRO_TEXT_3 "Ïîïðîáóéòå äîáàâèòü îäèí..."w |
?define NOTIFY_TEXT_NO_DISK "Äëÿ íà÷àëà äîáàâüòå õîòÿ áû îäèí äèñê"w |
?define NOTIFY_TEXT_DISK_LIMIT "Äîñòèãíóò ïðåäåë êîëè÷åñòâà âèðòóàëüíûõ äèñêîâ"w |
#else |
unsigned char *but_text[]={ |
"Add disk [F2]", |
"Delete disk [Del]", |
"Add [Ctrl+Enter]", |
0}; |
?define INTRO_TEXT_1 " There will be list of mounted" |
?define INTRO_TEXT_2 " virtual disks." |
?define INTRO_TEXT_3 " Try to add one..." |
?define NOTIFY_TEXT_NO_DISK "You need to have at least one disk" |
?define NOTIFY_TEXT_DISK_LIMIT "Reached the limit of the number of virtual disks" |
#endif |
struct path_string { unsigned char Item[256]; }; |
path_string disk_list[40]; |
dword devbuf; |
int disk_num; |
int selected; |
system_colors sc; |
proc_info Form; |
int mouse_dd; |
unsigned char dsize[30]; |
edit_box edit1= {40,20,200,0xffffff,0x94AECE,0x94AECE,0x94AECE,0,4,#dsize,#mouse_dd,100000000000010b}; |
unsigned char icons[14*56] = FROM "icons.raw"; |
void Main_Window() |
{ |
unsigned int id; |
unsigned char key; |
mem_Init(); |
if (load_dll2(boxlib, #edit_box_draw,0)!=0) |
{ |
notify("error: library doesn't exists /rd/1/lib/box_lib.obj"); |
ExitProcess(); |
} |
SetEventMask(0x27); |
loop() |
{ |
switch(WaitEvent()) |
{ |
case evMouse: |
//edit_box_mouse stdcall (#edit1); |
break; |
case evButton: |
id=GetButtonID(); |
if (id==1) ExitProcess(); |
if (id==10) AddDisk(); |
if (id==11) //del |
{ |
_DEL_DISK: |
if (disk_num==0) |
{ |
notify(NOTIFY_TEXT_NO_DISK); |
break; |
} |
param[0]='d'; |
param[1]=disk_list[selected].Item[3]; |
Console_Work(); |
Pause(15); |
GetDisks(); |
DrawTmpDisks(); |
} |
if (id>=20) |
{ |
if (selected==id-20) OpenTmpDisk(); |
selected=id-20; |
DrawTmpDisks(); |
} |
break; |
case evKey: |
key = GetKey(); |
if (key==182) if (disk_num<>0) goto _DEL_DISK; |
if (key==51) AddDisk(); |
if (key==13) OpenTmpDisk(); |
if (key==178) |
{ |
if (selected==0) break; |
selected--; |
DrawTmpDisks(); |
} |
if (key==177) |
{ |
if (selected+2>disk_num) break; |
selected++; |
DrawTmpDisks(); |
} |
if (key==176) |
{ |
if (selected<3) break; |
selected-=3; |
DrawTmpDisks(); |
} |
if (key==179) |
{ |
if (selected+4>disk_num) break; |
selected+=3; |
DrawTmpDisks(); |
} |
//EAX=key<<8; |
//edit_box_key stdcall(#edit1); |
break; |
case evReDraw: |
Draw_Window(); |
} |
} |
} |
void OpenTmpDisk() |
{ |
unsigned char eol_param[256]; |
if (!disk_num) return; |
strcpy(#eol_param, "/tmp#/1/"); |
eol_param[4]=disk_list[selected].Item[3]; |
RunProgram("/sys/File managers/Eolite", #eol_param); |
} |
void GetDisks() |
{ |
unsigned int j, fcount=30; |
unsigned char disk_name[256]; |
mem_Free(devbuf); |
devbuf= mem_Alloc(32); |
ReadDir(0, devbuf, "/"); |
fcount=ESDWORD[devbuf+8]; |
mem_Free(devbuf); |
devbuf = mem_Alloc(fcount+1*304+32); |
ReadDir(fcount, devbuf, "/"); |
disk_num=0; |
for (j=0; j<fcount; j++;) |
{ |
strcpy(#disk_name, j*304+devbuf+72); |
if (disk_name[0]!='t') continue; |
strcpy(#disk_list[disk_num].Item, #disk_name); |
disk_num++; |
} |
if (disk_num>12) disk_num=12; |
} |
unsigned int disk_pos_x[]={13,13,13,83,83,83,153,153,153,223,223,223}; |
unsigned int disk_pos_y[]={40,65,90,40,65,90,40,65,90,40,65,90}; |
void DrawTmpDisks() |
{ |
int i; |
DrawBar(0,31, Form.width-9,Form.height-GetSkinHeight()-5-30, 0xFFFFFF); |
if (disk_num==0) |
{ |
WriteText(17,45, 0x90, 0x777777, INTRO_TEXT_1, 0); |
WriteText(17,45+15, 0x90, 0x777777, INTRO_TEXT_2, 0); |
WriteText(17,45+42, 0x90, 0x777777, INTRO_TEXT_3, 0); |
return; |
}; |
if (selected>=disk_num) selected=disk_num-1; //âîññòàíàâëèâàåò âûäåëåíèå - õîðîøàÿ ôè÷à |
for (i=0; i<10; i++) DeleteButton(20+i); |
for (i=0; i<disk_num; i++) |
{ |
DefineButton(disk_pos_x[i], disk_pos_y[i], 60, 20, 20+i, 0xFFFfff); |
WriteText(disk_pos_x[i]+25,disk_pos_y[i]+6, 0x90, 0, #disk_list[i].Item, 0); |
_PutImage(disk_pos_x[i]+5,disk_pos_y[i]+4, 14,14, 3*14*14*3+#icons); |
if (selected==i) DrawRectangle(disk_pos_x[i], disk_pos_y[i], 60-1, 20-1, 0x00459A); |
} |
} |
void AddDisk() |
{ |
unsigned int i, j; |
if (disk_num>=10) |
{ |
notify(NOTIFY_TEXT_DISK_LIMIT); |
return; |
} |
param[0]='a'; |
for (i=0; i<9; i++) |
{ |
for (j=0; j<=disk_num; j++) |
{ |
if (i+48==disk_list[j].Item[3]) continue 1; |
} |
break; |
} |
param[1]=i+48; |
Console_Work(); |
Pause(5); |
GetDisks(); |
DrawTmpDisks(); |
} |
void Draw_Window() |
{ |
int i, x; |
sc.get(); |
DefineAndDrawWindow(170,150,314,250,0x74,sc.work,"Virtual Disk Manager 0.4",0); |
GetProcessInfo(#Form, SelfInfo); |
if (Form.status_window>2) return; //åñëè ñâåðíóòî â çàãîëîâîê, íè÷åãî íå ðèñóåì |
//ðèñóåì ïàíåëü |
DrawBar(0,0, Form.width-9,30, sc.work); |
DrawBar(0,30, Form.width-9,1, sc.work_graph); |
x=6; |
for (i=0; i<2; i++) |
{ |
DefineButton(x,5, strlen(but_text[i])*6+28,19, 10+i, sc.work_button); |
_PutImage(x+3,8, 14,14, i*14*14*3+#icons); |
WriteText(x+22,11, 0x80, sc.work_button_text, but_text[i], 0); |
x+=strlen(but_text[i])*6+37; |
} |
//ïîëó÷àåì ñïèñîê äîñòóïíûõ äèñêîâ |
GetDisks(); |
//âûâîäèì äîñòóïíûå äèñêè |
DrawTmpDisks(); |
//AddPanel(); |
} |
/*void AddPanel() |
{ |
DrawBar(0,Form.height-GetSkinHeight()-40, Form.width-9,1, sc.work_graph); |
DrawBar(0,Form.height-GetSkinHeight()-39, Form.width-9,35, sc.work); |
strcpy(#dsize, itoa(GetFreeRAM()/10)); |
//strcpy(#dsize, "100"); |
edit1.size=edit1.pos=strlen(#dsize); |
edit_box_draw stdcall(#edit1); //ðèñóåì ñòðîêó àäðåñà |
//DefineButton(-strlen(but_text[2])+Form.width-9,200, strlen(but_text[2])*6+28,19, 12, sc.work_button); |
//_PutImage(-strlen(but_text[2])+Form.width-9+3,200+3, 14,14, 2*14*14*3+#icons); |
}*/ |
/programs/cmm/tmpdisk/tmpdisk.c |
---|
0,0 → 1,71 |
#include "..\lib\kolibri.h" |
#include "..\lib\strings.h" |
#include "..\lib\file_system.h" |
#include "lang.h" |
///////////////////////////////////////////////////////////////////////////////////////// |
///////////////////////// îáëàñòü äàííûõ //////////////////// |
///////////////////////////////////////////////////////////////////////////////////////// |
struct ioctl_struct |
{ |
dword handle; |
dword io_code; |
dword input; |
dword inp_size; |
dword output; |
dword out_size; |
}; |
#define DEV_ADD_DISK 1 //input = structure add_disk_struc |
#define DEV_DEL_DISK 2 //input = structure del_disk_struc |
struct add_disk_struc |
{ |
dword DiskSize; // in sectors, 1 sector = 512 bytes. Include FAT service data |
unsigned char DiskId; // from 0 to 9 |
}; |
struct del_disk_struc |
{ |
unsigned char DiskId; //from 0 to 9 |
}; |
ioctl_struct ioctl; |
add_disk_struc add_disk; |
del_disk_struc del_disk; |
int driver_handle; |
///////////////////////////////////////////////////////////////////////////////////////// |
///////////////////////// êîä //////////////////// |
///////////////////////////////////////////////////////////////////////////////////////// |
#include "t_console.c" |
#include "t_window.c" |
void main() |
{ |
debug("========= tmpdisk 0.4 ========="); |
driver_handle = LoadDriver("tmpdisk"); |
if (driver_handle==0) |
{ |
notify("error: /rd1/1/lib/tmpdisk.obj driver loading failed"); |
notify("program terminated"); |
ExitProcess(); |
} |
else |
debug("tmpdisk.obj driver loaded successfully"); |
if (param) |
Console_Work(); |
else |
Main_Window(); |
ExitProcess(); |
} |
stop: |
/programs/cmm/tmpdisk/. |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |