- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
main()
{
j=atol("776677"); c=0;
gb=65500; /*гран буф не>65500!*/
gp=gb+65500;
c=PA();
vm = v_mod(0x0f00)&0x00ff;
if((vm!=2) && (vm!=3) && (vm!=7)) v_mod(3);
if(vm==7) v_m=MK_FP(0xB000,0); /* присвоить адр в-памяти */
else v_m=MK_FP(0xB800,0);
if(c==0) {printf("Самопроверка программы неудачна."); dely(9);}
gek=calloc(1000,sizeof(int));
bufa=farcalloc(4000,sizeof(long));
bfk=calloc(4000,sizeof(int));
ok=calloc(800,sizeof(char));
st=calloc(10,sizeof(char));
bufv=calloc(4000,sizeof(char));
if((gek==NULL)||(bufa==NULL)||(bfk==NULL)||(ok==NULL)||(st==NULL)||(bufv==NULL))
{
printf(" Неудачное выделение памяти для основных буферов.\n");
printf(" Программа не выполняется.");
dely(9); exit(1); }
for(x=0;x<4000;x++) {bufa[x]=0L;bfk[x]=0; /*занул буф адресов и кодов */
if(x<10) st[x]=0x00; /*буф для выв чисел на экр*/
if(x<26) urov[x]=1;
if(x<20) {abn[x]=1; aba[x]=2L;}} /*мин адресa абс ном строк и нач загр буф*/
if(x<128) B0[x]=0;
ur=vv=avt=in=0; i=N=0; zap=0;x_=1;
ifm=10;/*10,01,11,12,21 - 1:п/панель записей,0-инф п/панель,12,21-2 базы*/
/* vctp(3);*/
mou(0); kur(0);
okn=0; /*сбр инд сохр-х окон*/
v_mod(0);
nok1=16;
SET(); ch=pal[0];
textbackground(BLACK);
clrscr();
okno(0,2,ch,ch);
window(1,1,80,25);
okno(16,2,ch,ch);
nstr(1);
baz=1;
nfl="0.cry ";
F_place("10.cry");
kzo();
prx=3; /*нейтраль*/
for(vm=4000;vm<8000;vm++) v_m[vm]=0; vm=0;
/*vm-далее кол-во стр загр буф*/
ppan(0,0);
form_kod(2);/*чт genko*/
attr=pal[5]; vdl(a+1,y_,a+36,y_,0,0); /*сох атр бывш стр*/
vctp(0);
tit();
if(zap!=0) nstr(2);
ZA[0]='\0';
za=strlen(MPR);
strcat(ZA,MPR);if(za>3) strcat(ZA,"\\"); strcat(ZA,"save.com");
za=0; if((access(ZA,0)!=-1)) za=1; /*ZA-путь savera*/
/**************/
for(;;)
{
mou(1);
ch=get_char(1);
if((ch<48)||(ch>57)) /*кроме цифр*/
if((ch!=0xfe)&&(ch>0x20)&&(f_kl==0)) {printf("\7"); ch=0;}
mou(2); mus(a); /*ориен мыши*/
if((ch==TAB)||(ch==RIGHT)||(ch==LEFT))
tab();/*порядок не менять*/
if(ch==15) { ctrl(); tab();}
mus(a); mus(101);
if(ch==F7) gl_poisk(0);
if(ch==AF7) gl_poisk(1);
if(ch==F1) hlp();
if(ch==CTRL) ctrl();
if((ch==AF1)&&(Pp==1)) ctrl();
if((ch==AF2)&&(Pp==0)) ctrl();
if(ch==32) exr(0);
if(ch==AF3) exb();
if(ch==AF4) exr(1);
if(ch==UP) { cm=0; up(1);}
if(ch==DOWN) { cm=0; down(1); }
if(ch==PGUP) { cm=0;scroll(0,0);}
if(ch==PGDN) { cm=0;scroll(1,0);}
if(ch==HOME) { cm=0;scroll(0,4000);}
if(ch==END) { cm=0;scroll(1,4000);}
if(ch==F5) kon(1);
if(zap==0) /*ес зп разреш*/
{
if(ch==INS) { s=0;
if((chkm(3)!=0)||(chkm(4)!=0)) {s=1;
coo(0,0x4E,0xCF,"","Предельная длина файла!",
"Разрешено только удаление!",""," Выход");}
if((chkm(1)!=0)||(chkm(2)!=0)) {s=1;
coo(0,0x4E,0xCF,"","Исчерпана длина буфера!",
"Сохраните набранную информацию,","после чего можно продолжить.",
" Выход");}
if(vm==4000)
{coo(0,0x7f,0x70,"Количество записей в списке достигло 4000.",
"","В данном случае возможно только удаление",
Это один знакомый слесарь ЭВМ писал прогу для создания/редактирования/просмотра самопальной древовидной БД, для своих нужд, с тем условием, что работать она должна была чуть ли не на i286, и грузилась не более 2х секунд. Недавно он обратился ко мне с просьбой перенести её под линь, но увидев это я решил что такое жить не должно, поэтому просто писал аналог с нуля, на плюсах, но справедливости ради, замечу что моя прога вышла чуть тормознее:).
Полный код к сожалению не влез, вот он: http://ideone.com/3sLsa.
P.S. Авторское форматирование сохранено.