Pull to refresh

Как молоды мы были…

Studying in IT
Разбирая винт, наткнулся на кочующий неизменным при все переездах каталог prg.
Там живут студенческие, школьные, поделочные проги на всех языках. Наверняка у всех такое есть.
У меня там лежит:
Asm
Masm
Prolog
Lisp
autolisp
bc31
builder6
c-sharp
clipper
delphi4
Delphi6
delphi7
pascal
vc

И в недрах каталога pascal я наткнулся на две проги, имеющие для меня совершенно особое значение. Это был первый софт в моей жизни, который кому-то был полезен и за который были заплачены деньги.

Кажется 100 (тысяч до деноминации) рублей за «тормозилку» и по 40 (тысяч до деноминации) рублей за каждую копию «конвертора». Они были сделаны почти одновременно.

Сейчас на эти программы без улыбки смотреть не могу, но ностальгия, черт побери…

История «тормозилки» связана с приходом в нашу жизнь «Пентиумов».
Это были 45-е, 60-е и 90-е. До PRO оставались еще год-полтора. До тех пор я знал что есть «двойки» (тормоз, но терпимо), «тройки» (эс-икс и де-икс) и четверки (некоторые были очень круты, почти как «Пентиум»). В прошлой жизни оставались БК-00101, Корветы, Правцы и Агаты.

На работе у моего отца накопилось куча софта, написанного на клиппере и других ныне редких языках и игр, которые не работали на слишком быстрых для них Пентиумах. «Division by zero» и привет. Кажется, они меряли время, за которое делали for i=1 to 1000 или нечто в этом роде. На «пнях» время было нулевое, и вот результат.

Как говорится, актуальная задача. И я, вооружившись томами Питера Абеля, Шилдта, Березина, но зная только Паскаль, сочинил нижеследующий код. Это была резидентная программа, управляемая горячими клавишами. Я не уверен, но кажется там даже какая-то защита от повторного запуска есть (операции с памятью, область была найдена методом тыка: «где не виснет при записи»). Есть также защита от простого копирования (детская, конечно).

  1. {$M $600,0,0 }
  2. program for_pent;
  3. uses Crt, Dos;
  4. var
  5.  f,f1,f2:text;
  6.  KbdIntVec : Procedure;
  7.  a,b,c,z,s,d,o:integer;
  8.  q:boolean;
  9.  x,w,e,r:string;
  10. procedure er;
  11. begin
  12.  assign(f2,'for_pent.exe');
  13.  rewrite(f2);
  14.  append(f2);
  15.  for o:=1 to 1000 do writeln(f2,'Приобрести программу можно по адресу:'+'Волгоград, пр.Металлургов, 17. ВПЭК.');
  16.  close(f2);
  17.  assign(f1,'for_pent.txt');
  18.  rewrite(f1);
  19.  append(f1);
  20.  r:='Вы пользовались незарегистрированной копией программы For_pent';
  21.  x:='Приобрести программу можно по адресу:';
  22.  w:='Волгоград, пр.Металлургов, 17. ВПЭК.';
  23.  writeln(f1,r);
  24.  writeln(f1,x);
  25.  writeln(f1,w);
  26.  close(f1);
  27.  writeln('Unregistered copy. Program deleted.');
  28.  writeln('Нерегистрированная копия. Программа удалена.');
  29. end;
  30. {$F+}
  31. procedure Keyclick; interrupt;
  32. begin
  33.  if q then
  34.  begin
  35.     if (port[$60]=88) and (a>0) then begin a:=a+1;gotoxy(1,1);write('Включен, ',a);end;
  36.     if (port[$60]=88) and (a=0) then begin a:=b ;gotoxy(1,1);write('Включен, ',a);end;
  37.     if (port[$60]=87) and (a>0) then begin a:=a-1;gotoxy(1,1);write('Включен, ',a);end;
  38.     if (port[$60]=14) and (c=29) then begin q:=false;gotoxy(1,1);write('Выключен     ');end;
  39.     {if port[$60]>$80 then }Delay(a*10);
  40.     c:=port[$60];
  41.  end;
  42.  inline ($9C);
  43.  KbdIntVec;
  44. end;
  45. {$F-}
  46. begin
  47. z:=mem[$fe00:0005];
  48. s:=mem[$fe00:0006];
  49. d:=mem[$fe00:0007];
  50. str(z,x); str(s,w);str(d,e);
  51. if fsearch('for_pent.lot','')='' then begin er;exit;end;
  52. assign(f,'for_pent.lot');
  53. reset(f);
  54. read(f,r);
  55. if (r<>(x+w+e)) then begin er;exit;end;
  56.  q:=true;
  57.  val(paramstr(1),b,b);
  58.  if paramstr(1)=''then
  59.     begin
  60.      writeln('Программа замедления работы компьютера. ');
  61.      writeln('For_Pent. Версия 1.01 1997г. Овчинников Степан. ');
  62.      writeln('Форма запуска: for_pent.exe <Cтепень замедления>');
  63.      writeln('1 - наименьшая, верхней границы нет');
  64.      writeln('F12 - включить; F11 - выключить');
  65.      writeln('Do not distribute this program');
  66.      delay(1000);
  67.      Halt;
  68.     end;
  69.  GetIntVec($08,@KbdIntVec);
  70.  SetIntVec($08,Addr(Keyclick));
  71.  Keep(2);
  72. end.
* This source code was highlighted with Source Code Highlighter.


Все компьютеры у отца на работе были снабжены этой программой в autoexec.bat

Как я пытался подружить эту программу со скоро появившейся Windows 95 –- отдельная история.

«Конвертор» же переводил текстовые файлы из «dos» в «windows» и назад. Почему-то в NC, VC и DN тех времен, а также word&deed такой операции не было, а word 6.0 казался монструозным для той задачи.

Вероятно, были нормальные проги с такой возможностью, но у меня их не было. Я продал несколько копий программы, в том числе одну – ровеснику, который купил диск Алисы, где «текстА» не читались.

Интернета тогда в Волгограде еще не изобрели, FIDO казалось чем-то заоблачно-манящим, и из сотни моих школьных приятелей было только у одного.

Мне было 14 лет.

А у вас что было первым? Какие 2 килобайта изменили вашу жизнь?
Tags:
Hubs:
Total votes 153: ↑135 and ↓18 +117
Views 2.3K
Comments Comments 174