Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

Реально ли написать свою ОС ?   Найти похожие ветки 

 
Slider007 ©   (2005-02-21 14:24) [40]

Polevi ©   (21.02.05 11:36) [37]
гы, сам с собой :)

всегда приятно поговорить с умным человеком :)


 
КаПиБаРа ©   (2005-02-21 14:30) [41]

Petr V. Abramov ©   (21.02.05 14:17) [39]
Не знаю насчет 1-ой и 2-ой, но даже 3-я еще осью не была.


 
1008 ©   (2005-02-21 15:05) [42]

Вот готовая:

#define G(n) int n(int t, int q, int d)
#define X(p,t,s) (p>=t&&p<(t+s)&&(p-(t)&1023)<(s&1023))
#define U(m) *((signed char *)(m))
#define F if(!--q){
#define I(s) (int)main-(int)s
#define P(s,c,k) for(h=0; h>>14==0; h+=129)Y(16*c+h/1024+Y(V+36))&128>>(h&7)?U(s+(h&15367))=k:k

G (B)
{
 Z;
 F D = E (Y (V), C = E (Y (V), Y (t + 4) + 3, 4, 0), 2, 0);
 Y (t + 12) = Y (t + 20) = i;
 Y (t + 24) = 1;
 Y (t + 28) = t;
 Y (t + 16) = 442890;
 Y (t + 28) = d = E (Y (V), s = D * 8 + 1664, 1, 0);
 for (p = 0; j < s; j++, p++)
   U (d + j) = i == D | j < p ? p--, 0 : (n = U (C + 512 + i++)) < " " ? p |=
     n * 56 - 497, 0 : n;
}

n = Y (Y (t + 4)) & 1;
F
U (Y (t + 28) + 1536) |=
62 & -n;
M
U (d + D) =
X (D, Y (t + 12) + 26628, 412162) ? X (D, Y (t + 12) + 27653,
          410112) ? 31 : 0 : U (d + D);
for (; j < 12800; j += 8)
 P (d + 27653 + Y (t + 12) + " " * (j & ~511) + j % 512,
    U (Y (t + 28) + j / 8 + 64 * Y (t + 20)), 0);
}

F if (n)
 {
   D = Y (t + 28);
   if (d - 10)
     U (++Y (t + 24) + D + 1535) = d;
   else
     {
for (i = D; i < D + 1600; i++)
  U (i) = U (i + 64);
Y (t + 24) = 1;
E (Y (V), i - 127, 3, 0);
     }
 }
else
 Y (t + 20) += ((d >> 4) ^ (d >> 5)) - 3;
}
}

G (_);
G (o);
G (main)
{
 Z, k = K;
 if (!t)
   {
     Y (V) = V + 208 - (I (_));
     L (209, 223) L (168, 0) L (212, 244) _((int) &s, 3, 0);
     for (; 1;)
R n = Y (V - 12);
     if (C & " ")
{
  k++;
  k %= 3;
  if (k < 2)
    {
      Y (j) -= p;
      Y (j) += p += U (&D) * (1 - k * 1025);
      if (k)
 goto y;
    }
  else
    {
      for (C = V - 20;
    !i && D & 1 && n
    && (X (p, Y (n + 12), Y (n + 16)) ? j = n + 12, Y (C + 8) =
        Y (n + 8), Y (n + 8) = Y (V - 12), Y (V - 12) =
        n, 0 : n); C = n, n = Y (n + 8));
      i = D & 1;
      j &= -i;
    }
}
     else if (128 & ~D)
{
  E (Y (n), n, 3, U (V + D % 64 + 131) ^ 32);
  n = Y (V - 12);
y:C = 1 << 24;
  M U (C + D) = 125;
  o (n, 0, C);
  P (C + p - 8196, 88, 0);
  M U (Y (0x11028) + D) = U (C + D);
}
   }
}

for (D = 720; D > -3888; D--)
 putchar (D >
   0 ?
   "  )!\320\234\360\256\370\256 0\230F           .,mnbvcxz    ;lkjhgfdsa \n][poiuytrewq  =-0987654321   \357\262   \337\337 \357\272   \337\337         ( )\"\343\312F\320!/ !\230 26!/\16 K>!/\16\332 \4\16\251\0160\355&\2271\20\2300\355`x{0\355\347\2560 \237qpa%\231o!\230 \337\337\337     ,               )\"K\240   \343\316qrpxzy\0 sRDh\16\313\212u\343\314qrzy    !0( "
   [D] ^ 32 : Y (I (D)));
return 0;
}

G (o)
{
 Z;
 if (t)
   {
     C = Y (t + 12);
     j = Y (t + 16);
     o (Y (t + 8), 0, d);
     M U (d + D) =
X (D, C, j) ? X (D, C + 1025, j - 2050) ? X (D, C + 2050,
          j - 3075) ? X (D,
           C + 2050,
           j -
           4100) ?
X (D, C + 4100,
   ((j & 1023) + 18424)) ? 176 : 24 : 20 : 28 : 0 : U (d + D);
     for (n = Y (t + 4); U (i + n); i++)
P (d + Y (t + 12) + 5126 + i * 8, U (n + i), 31);
     E (Y (t), t, 2, d);
   }
}

G (_)
{
 Z = Y (V + 24);
 F Y (V - 16) += t;
 D = Y (V - 16) - t;
}

F for (i = 124; i < 135; i++)
 D = D << 3 | Y (t + i) & 7;
}

if (q > 0)
 {
   for (; n = U (D + i); i++)
     if (n - U (t + i))
{
  D += _(D, 2, 0) + 1023 & ~511;
  i = ~0;
}
   F if (Y (D))
     {
n = _(164, 1, 0);
Y (n + 8) = Y (V - 12);
Y (V - 12) = n;
Y (n + 4) = i = n + 64;
for (; j < 96; j++)
  Y (i + j) = Y (t + j);
i = D + 512;
j = i + Y (i + 32);
for (; Y (j + 12) != Y (i + 24); j += 40);
E (Y (n) = Y (j + 16) + i, n, 1, 0);
     }
 }
}

return D;
}


Зовётся: gavin

1) First, build the kernel and filesystem (just "make").  In short, you need to build this on an x86 Linux machine.  If you wish to try to compile on an OS other than Linux you may need modify the makefile to compile "sh" using a cross-compiler that produces elf binaries - i.e. a cross-compiler targeting x86 Linux.  In short, you need to build this on an x86 Linux machine.
2) Next, find a suitable machine to run the OS on.  It should be perfectly safe, and since it does not directly attempt to access any hard disk drives (only a ramdisk loaded by the bootloader) it should do no damage to your existing setup, BUT I ACCEPT NO LIABILITY FOR ANY DAMAGE DONE BY THIS PROGRAM.  Run it at your own risk.  The OS has been tested on half a dozen machines or so, and worked on all but one.  The failure came in the form of the machine rebooting itself midway through loading the OS, with no nasty side-effects.
Hardware requirements - i386 or better processor, but the GUI is surprisingly power-hungry, so I would recommend a fast p3 or p4 processor (has been tested on p3/p4/athlon machines).  Minimum RAM is something like 32MB.  PS2 mouse & keyboard required - no USB I"m afraid, and the keyboard map is for a UK keyboard.  Uses Vesa VBE 3.0, so should work on any modern graphics card (has been tested on Nvidia, Matrox, and SiS cards).
3) Now you need to setup a bootloader to load the OS.  If you have a system using a lilo bootloader you can simply add the OS to your boot menu.  Just add appropriate "image=" and "initrd=" lines to your /etc/lilo.conf, pointing at "kernel" and "fs.tar" respectively (as built by make earlier), then run lilo.  If you do not wish modify your lilo setup, one easy option is to get yourself a grub bootdisk image, and follow the instructions for grub below - debian users can simple "apt-get install grub-disk" to get themselves a grub bootdisk.
If you run grub, then at the boot menu simply hit "c" to get a console, then type "kernel=(hd0,0)/<PATH>/kernel" (substituting appropriate harddrive/partition numbers & path, or using "(fd0)" to load a kernel on the floppy), then "initrd=(hd0,0)/<PATH>/fs.tar", and finally "boot".
4) Assuming the OS has booted, what can you do now?  Well, start by trying "sh", to open another shell.  Then, try "vi prog.c" (although this file may have been re-named...), to open up the OS source in a text file viewer (up/down or pgup/pgdown to scroll).  [Note that the provided applications, "sh" and "vi" both have windows of the same size, and that open in the top left corner of the screen, so you may need drag the windows around a bit to tell them apart.]
5) To shut down - just hit the power button. :-)


 
Petr V. Abramov ©   (2005-02-21 15:33) [43]

КаПиБаРа ©   (21.02.05 14:30) [41]
> Не знаю насчет 1-ой и 2-ой, но даже 3-я еще осью не была.
 Была. Просто использовала DOS вместо загрузчика.


 
Petr V. Abramov ©   (2005-02-21 15:33) [44]

КаПиБаРа ©   (21.02.05 14:30) [41]
> Не знаю насчет 1-ой и 2-ой, но даже 3-я еще осью не была.
 Была. Просто использовала DOS вместо загрузчика.


 
Плохиш ©   (2005-02-21 15:44) [45]

>Petr V. Abramov

Не путаем понятия ОС и оболочки, а то столько ОС получится :-) NC, Xtree, DosShell ...


 
}|{yk ©   (2005-02-21 15:46) [46]

Да нет, там было свое API, свой формат исполняемых файлов, так что можно было назвать это ОС.


 
Petr V. Abramov ©   (2005-02-21 17:37) [47]

> Плохиш ©   (21.02.05 15:44) [45]
 Почитай Шульмана Inside Windows 95, потом не путай


 
Petr V. Abramov ©   (2005-02-21 17:39) [48]

> Плохиш ©   (21.02.05 15:44) [45]
 Почитай Шульмана Inside Windows 95, там и про 2.0 и про 3.1 есть, в качестве лирических отступлений.
 Если уж по-товоему "не путать", то и Win95 до OSR/1 - "оболочка"


 
default ©   (2005-02-21 17:53) [49]

http://phpdevelop.info/files/modos.pdf
на английском



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.052 c
1-1109687774
Nes
2005-03-01 17:36
2005.03.13
Нелепый вопрос: Как сделать edit1.text все букву all caps


14-1108735753
Cobalt
2005-02-18 17:09
2005.03.13
Есьт ли у вас в "команде" уроды?


1-1109661324
BillyJeans
2005-03-01 10:15
2005.03.13
Добавление пункта в контекстное меню системы


1-1109510549
Bogdan
2005-02-27 16:22
2005.03.13
Как заменить символы на *


9-1102707516
Zak3D[@Tm]
2004-12-10 22:38
2005.03.13
Привязка ко времени ( как это осуществляется )





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский