Top Secret

/* Windows '98 source code */

/*
TOP SECRET Microsoft(c) Code
Project: Chicago(tm)
Projected release-date: Summer 1998
*/

#include "win31.h"
#include "win95.h"
#include "evenmore.h"
#include "oldstuff.h"
#include "billrulz.h"

#define INSTALL_HARD

char make_prog_look_big[1600000];

void main()
{
while(!CRASHED)
{
display_copyright_message();
display_bill_rules_message();
do_nothing_loop();
if (first_time_installation)
{
make_50_megabyte_swapfile();
do_nothing_loop();
totally_screw_up_HPFS_file_system();
search_and_destroy_the_rest_of_OS2();
hang_system();
}

write_something(anything);
display_copyright_message();
do_nothing_loop();
do_some_stuff();

if (still_not_crashed)
{
display_copyright_message();
do_nothing_loop();
basically_run_windows_3.1();
do_nothing_loop();
do_nothing_loop();
}
}

if (detect_cache())
disable_cache();

if (fast_cpu())
{
set_wait_states(lots);
set_mouse(speed, very_slow);
set_mouse(action, jumpy);
set_mouse(reaction, sometimes);
}


/* printf("Welcome to Windows 3.11");*/
/* printf("Welcome to Windows 95"); */
printf("Welcome to Windows 98");

if (system_ok())
crash(to_dos_prompt);
else
system_memory = open("a:\swp0001.swp",
O_CREATE);

while(something)
{
sleep(5);
get_user_input();
sleep(5);
act_on_user_input();
sleep(5);
}

create_general_protection_fault();
}
11827
Äänestä

Muut lukivat myös

Vastaukset 11

Vanhimmat

linuksin kernelin tänne

Äänestä
  • Siinä sinulle linux kernel 0.01 vuodelta 1993

    http://www.oldlinux.org/Linux.old/Linux-0.01/sources/system/kernel/

    /*
    * 'sched.c' is the main kernel file. It contains scheduling primitives
    * (sleep_on, wakeup, schedule etc) as well as a number of simple system
    * call functions (type getpid(), which just extracts a field from
    * current-task
    */
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    #define LATCH (1193180/HZ)

    extern void mem_use(void);

    extern int timer_interrupt(void);
    extern int system_call(void);

    union task_union {
       struct task_struct task;
       char stack[PAGE_SIZE];
    };

    static union task_union init_task = {INIT_TASK,};

    long volatile jiffies=0;
    long startup_time=0;
    struct task_struct *current = &(init_task.task), *last_task_used_math = NULL;

    struct task_struct * task[NR_TASKS] = {&(init_task.task), };

    long user_stack [ PAGE_SIZE>>2 ] ;

    struct {
       long * a;
       short b;
       } stack_start = { & user_stack [PAGE_SIZE>>2] , 0x10 };
    /*
    * 'math_state_restore()' saves the current math information in the
    * old math state array, and gets the new ones from the current task
    */
    void math_state_restore()
    {
       if (last_task_used_math)
          __asm__("fnsave %0"::"m" (last_task_used_math->tss.i387));
       if (current->used_math)
          __asm__("frstor %0"::"m" (current->tss.i387));
       else {
          __asm__("fninit"::);
          current->used_math=1;
       }
       last_task_used_math=current;
    }

    /*
    * 'schedule()' is the scheduler function. This is GOOD CODE! There
    * probably won't be any reason to change this, as it should work well
    * in all circumstances (ie gives IO-bound processes good response etc).
    * The one thing you might take a look at is the signal-handler code here.
    *
    * NOTE!! Task 0 is the 'idle' task, which gets called when no other
    * tasks can run. It can not be killed, and it cannot sleep. The 'state'
    * information in task[0] is never used.
    */
    void schedule(void)
    {
       int i,next,c;
       struct task_struct ** p;

    /* check alarm, wake up any interruptible tasks that have got a signal */

       for(p = &LAST_TASK ; p > &FIRST_TASK ; --p)
          if (*p) {
             if ((*p)->alarm && (*p)->alarm < jiffies) {
                   (*p)->signal |= (1signal && (*p)->state==TASK_INTERRUPTIBLE)
                (*p)->state=TASK_RUNNING;
          }

    /* this is the scheduler proper: */

       while (1) {
          c = -1;
          next = 0;
          i = NR_TASKS;
          p = &task[NR_TASKS];
          while (--i) {
             if (!*--p)
                continue;
             if ((*p)->state == TASK_RUNNING && (*p)->counter > c)
                c = (*p)->counter, next = i;
          }
          if (c) break;
          for(p = &LAST_TASK ; p > &FIRST_TASK ; --p)
             if (*p)
                (*p)->counter = ((*p)->counter >> 1) +
                      (*p)->priority;
       }
       switch_to(next);
    }

    int sys_pause(void)
    {
       current->state = TASK_INTERRUPTIBLE;
       schedule();
       return 0;
    }

    void sleep_on(struct task_struct **p)
    {
       struct task_struct *tmp;

       if (!p)
          return;
       if (current == &(init_task.task))
          panic("task[0] trying to sleep");
       tmp = *p;
       *p = current;
       current->state = TASK_UNINTERRUPTIBLE;
       schedule();
       if (tmp)
          tmp->state=0;
    }

    void interruptible_sleep_on(struct task_struct **p)
    {
       struct task_struct *tmp;

       if (!p)
          return;
       if (current == &(init_task.task))
          panic("task[0] trying to sleep");
       tmp=*p;
       *p=current;
    repeat:   current->state = TASK_INTERRUPTIBLE;
       schedule();
       if (*p && *p != current) {
          (**p).state=0;
          goto repeat;
       }
       *p=NULL;
       if (tmp)
          tmp->state=0;
    }

    void wake_up(struct task_struct **p)
    {
       if (p && *p) {
          (**p).state=0;
          *p=NULL;
       }
    }

    void do_timer(long cpl)
    {
       if (cpl)
          current->utime++;
       else
          current->stime++;
       if ((--current->counter)>0) return;
       current->counter=0;
       if (!cpl) return;
       schedule();
    }

    int sys_alarm(long seconds)
    {
       current->alarm = (seconds>0)?(jiffies+HZ*seconds):0;
       return seconds;
    }

    int sys_getpid(void)
    {
       return current->pid;
    }

    int sys_getppid(void)
    {
       return current->father;
    }

    int sys_getuid(void)
    {
       return current->uid;
    }

    int sys_geteuid(void)
    {
       return current->euid;
    }

    int sys_getgid(void)
    {
       return current->gid;
    }

    int sys_getegid(void)
    {
       return current->egid;
    }

    int sys_nice(long increment)
    {
       if (current->priority-increment>0)
          current->priority -= increment;
       return 0;
    }

    int sys_signal(long signal,long addr,long restorer)
    {
       long i;

       switch (signal) {
          case SIGHUP: case SIGINT: case SIGQUIT: case SIGILL:
          case SIGTRAP: case SIGABRT: case SIGFPE: case SIGUSR1:
          case SIGSEGV: case SIGUSR2: case SIGPIPE: case SIGALRM:
          case SIGCHLD:
             i=(long) current->sig_fn[signal-1];
             current->sig_fn[signal-1] = (fn_ptr) addr;
             current->sig_restorer = (fn_ptr) restorer;
             return i;
          default: return -1;
       }
    }

    void sched_init(void)
    {
       int i;
       struct desc_struct * p;

       set_tss_desc(gdt+FIRST_TSS_ENTRY,&(init_task.task.tss));
       set_ldt_desc(gdt+FIRST_LDT_ENTRY,&(init_task.task.ldt));
       p = gdt+2+FIRST_TSS_ENTRY;
       for(i=1;ia=p->b=0;
          p++;
          p->a=p->b=0;
          p++;
       }
       ltr(0);
       lldt(0);
       outb_p(0x36,0x43);      /* binary, mode 3, LSB/MSB, ch 0 */
       outb_p(LATCH & 0xff , 0x40);   /* LSB */
       outb(LATCH >> 8 , 0x40);   /* MSB */
       set_intr_gate(0x20,&timer_interrupt);
       outb(inb_p(0x21)&~0x01,0x21);
       set_system_gate(0x80,&system_call);
    }

    Äänestä

  • hemmaderi kirjoitti:

    Siinä sinulle linux kernel 0.01 vuodelta 1993

    http://www.oldlinux.org/Linux.old/Linux-0.01/sources/system/kernel/

    /*
    * 'sched.c' is the main kernel file. It contains scheduling primitives
    * (sleep_on, wakeup, schedule etc) as well as a number of simple system
    * call functions (type getpid(), which just extracts a field from
    * current-task
    */
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    #define LATCH (1193180/HZ)

    extern void mem_use(void);

    extern int timer_interrupt(void);
    extern int system_call(void);

    union task_union {
       struct task_struct task;
       char stack[PAGE_SIZE];
    };

    static union task_union init_task = {INIT_TASK,};

    long volatile jiffies=0;
    long startup_time=0;
    struct task_struct *current = &(init_task.task), *last_task_used_math = NULL;

    struct task_struct * task[NR_TASKS] = {&(init_task.task), };

    long user_stack [ PAGE_SIZE>>2 ] ;

    struct {
       long * a;
       short b;
       } stack_start = { & user_stack [PAGE_SIZE>>2] , 0x10 };
    /*
    * 'math_state_restore()' saves the current math information in the
    * old math state array, and gets the new ones from the current task
    */
    void math_state_restore()
    {
       if (last_task_used_math)
          __asm__("fnsave %0"::"m" (last_task_used_math->tss.i387));
       if (current->used_math)
          __asm__("frstor %0"::"m" (current->tss.i387));
       else {
          __asm__("fninit"::);
          current->used_math=1;
       }
       last_task_used_math=current;
    }

    /*
    * 'schedule()' is the scheduler function. This is GOOD CODE! There
    * probably won't be any reason to change this, as it should work well
    * in all circumstances (ie gives IO-bound processes good response etc).
    * The one thing you might take a look at is the signal-handler code here.
    *
    * NOTE!! Task 0 is the 'idle' task, which gets called when no other
    * tasks can run. It can not be killed, and it cannot sleep. The 'state'
    * information in task[0] is never used.
    */
    void schedule(void)
    {
       int i,next,c;
       struct task_struct ** p;

    /* check alarm, wake up any interruptible tasks that have got a signal */

       for(p = &LAST_TASK ; p > &FIRST_TASK ; --p)
          if (*p) {
             if ((*p)->alarm && (*p)->alarm < jiffies) {
                   (*p)->signal |= (1signal && (*p)->state==TASK_INTERRUPTIBLE)
                (*p)->state=TASK_RUNNING;
          }

    /* this is the scheduler proper: */

       while (1) {
          c = -1;
          next = 0;
          i = NR_TASKS;
          p = &task[NR_TASKS];
          while (--i) {
             if (!*--p)
                continue;
             if ((*p)->state == TASK_RUNNING && (*p)->counter > c)
                c = (*p)->counter, next = i;
          }
          if (c) break;
          for(p = &LAST_TASK ; p > &FIRST_TASK ; --p)
             if (*p)
                (*p)->counter = ((*p)->counter >> 1) +
                      (*p)->priority;
       }
       switch_to(next);
    }

    int sys_pause(void)
    {
       current->state = TASK_INTERRUPTIBLE;
       schedule();
       return 0;
    }

    void sleep_on(struct task_struct **p)
    {
       struct task_struct *tmp;

       if (!p)
          return;
       if (current == &(init_task.task))
          panic("task[0] trying to sleep");
       tmp = *p;
       *p = current;
       current->state = TASK_UNINTERRUPTIBLE;
       schedule();
       if (tmp)
          tmp->state=0;
    }

    void interruptible_sleep_on(struct task_struct **p)
    {
       struct task_struct *tmp;

       if (!p)
          return;
       if (current == &(init_task.task))
          panic("task[0] trying to sleep");
       tmp=*p;
       *p=current;
    repeat:   current->state = TASK_INTERRUPTIBLE;
       schedule();
       if (*p && *p != current) {
          (**p).state=0;
          goto repeat;
       }
       *p=NULL;
       if (tmp)
          tmp->state=0;
    }

    void wake_up(struct task_struct **p)
    {
       if (p && *p) {
          (**p).state=0;
          *p=NULL;
       }
    }

    void do_timer(long cpl)
    {
       if (cpl)
          current->utime++;
       else
          current->stime++;
       if ((--current->counter)>0) return;
       current->counter=0;
       if (!cpl) return;
       schedule();
    }

    int sys_alarm(long seconds)
    {
       current->alarm = (seconds>0)?(jiffies+HZ*seconds):0;
       return seconds;
    }

    int sys_getpid(void)
    {
       return current->pid;
    }

    int sys_getppid(void)
    {
       return current->father;
    }

    int sys_getuid(void)
    {
       return current->uid;
    }

    int sys_geteuid(void)
    {
       return current->euid;
    }

    int sys_getgid(void)
    {
       return current->gid;
    }

    int sys_getegid(void)
    {
       return current->egid;
    }

    int sys_nice(long increment)
    {
       if (current->priority-increment>0)
          current->priority -= increment;
       return 0;
    }

    int sys_signal(long signal,long addr,long restorer)
    {
       long i;

       switch (signal) {
          case SIGHUP: case SIGINT: case SIGQUIT: case SIGILL:
          case SIGTRAP: case SIGABRT: case SIGFPE: case SIGUSR1:
          case SIGSEGV: case SIGUSR2: case SIGPIPE: case SIGALRM:
          case SIGCHLD:
             i=(long) current->sig_fn[signal-1];
             current->sig_fn[signal-1] = (fn_ptr) addr;
             current->sig_restorer = (fn_ptr) restorer;
             return i;
          default: return -1;
       }
    }

    void sched_init(void)
    {
       int i;
       struct desc_struct * p;

       set_tss_desc(gdt+FIRST_TSS_ENTRY,&(init_task.task.tss));
       set_ldt_desc(gdt+FIRST_LDT_ENTRY,&(init_task.task.ldt));
       p = gdt+2+FIRST_TSS_ENTRY;
       for(i=1;ia=p->b=0;
          p++;
          p->a=p->b=0;
          p++;
       }
       ltr(0);
       lldt(0);
       outb_p(0x36,0x43);      /* binary, mode 3, LSB/MSB, ch 0 */
       outb_p(LATCH & 0xff , 0x40);   /* LSB */
       outb(LATCH >> 8 , 0x40);   /* MSB */
       set_intr_gate(0x20,&timer_interrupt);
       outb(inb_p(0x21)&~0x01,0x21);
       set_system_gate(0x80,&system_call);
    }

    ihan vaan pikaisella silmäilyllä katseltuna, joiden pahojen virheiden etsimisen jätän arvoisan raadin kotitehtäväksi, sillä tarkoituksena ilmeisestikin oli, että olisin ne siitä huomattuani riemuissani julistanut niitä kaikelle kansalle täälläkin, mutta emmä nyt sentään noin helppoon mene: korjatkaa itte mokanne.

    Äänestä

  • pahaa virhettä kirjoitti:

    ihan vaan pikaisella silmäilyllä katseltuna, joiden pahojen virheiden etsimisen jätän arvoisan raadin kotitehtäväksi, sillä tarkoituksena ilmeisestikin oli, että olisin ne siitä huomattuani riemuissani julistanut niitä kaikelle kansalle täälläkin, mutta emmä nyt sentään noin helppoon mene: korjatkaa itte mokanne.

    varmasti kaikkia kiinostaa softan ensimmäisessä versiossa olevat virheet.

    Äänestä

  • asdfghjk kirjoitti:

    varmasti kaikkia kiinostaa softan ensimmäisessä versiossa olevat virheet.

    linuksin versiokerneleissä siittä eteenpäin: sehän se Torvi-Valtsu ohjelmoi kuulema ihna omin nokkinensa sen ensimmäisen versiokernelin, mutta siinä oli jo silloin nuokin virheet, johin viittasin ja joita myöhemmistäkään versioista ei ole kiivaista ja maailmanlaajuisista yrityksistä huolimatta löydety, vaan on sitä kerneliä sotkettu entisestään niitä pahoja virheitä etsittäessä ja nimenomaisesti siitä erittäinkin pitälle johtuu, että sehän on ihan uusi linuks vähintäänkin parikolmekertaa viikossa ja parhaina viikkoina...tai parhaina ja parhaina, mutta kumminkin...useamminkin. Mä en kuulkaa näin pienellä liksalla ala kertoilemaan kenelekään, mitäs ne on pahat virheet siinä. Korjatkaa vaan itte mokanne...ohjelmointi ihan helppoo nykyään, kun on kaikki wizardit ja velhot ynnä tekoälykääpiöt ja semmoiset ja tommoiset, jotka heti arvaa, mimmosta ohjelmaa siinä aletaan naputteleen ja alkaa väkisinkin heti neuvoon, kuinka se tehdään ja minkä värinen sen pitää olla.

    Äänestä

  • ja sitten on ollut alamäkeä kirjoitti:

    linuksin versiokerneleissä siittä eteenpäin: sehän se Torvi-Valtsu ohjelmoi kuulema ihna omin nokkinensa sen ensimmäisen versiokernelin, mutta siinä oli jo silloin nuokin virheet, johin viittasin ja joita myöhemmistäkään versioista ei ole kiivaista ja maailmanlaajuisista yrityksistä huolimatta löydety, vaan on sitä kerneliä sotkettu entisestään niitä pahoja virheitä etsittäessä ja nimenomaisesti siitä erittäinkin pitälle johtuu, että sehän on ihan uusi linuks vähintäänkin parikolmekertaa viikossa ja parhaina viikkoina...tai parhaina ja parhaina, mutta kumminkin...useamminkin. Mä en kuulkaa näin pienellä liksalla ala kertoilemaan kenelekään, mitäs ne on pahat virheet siinä. Korjatkaa vaan itte mokanne...ohjelmointi ihan helppoo nykyään, kun on kaikki wizardit ja velhot ynnä tekoälykääpiöt ja semmoiset ja tommoiset, jotka heti arvaa, mimmosta ohjelmaa siinä aletaan naputteleen ja alkaa väkisinkin heti neuvoon, kuinka se tehdään ja minkä värinen sen pitää olla.

    "Mä en kuulkaa näin pienellä liksalla ala kertoilemaan kenelekään, mitäs ne on pahat virheet siinä."

    Eli teet kaiken vain rahan takia ? ja ilmeisesti olet tehnyt useita kerneleitä ihan noin vaan.

    Tai sitten yrität vain päteä...

    "mutta siinä oli jo silloin nuokin virheet, johin viittasin ja joita myöhemmistäkään versioista ei ole kiivaista ja maailmanlaajuisista yrityksistä huolimatta löydety,"

    Olet siis vakavissasi sitä mieltä että 13 vuotiasta koodin osaa ei ole kirjoitettu moneen kertaan uusiksi ? just joo.

    ps. tuli päivän v*ttuilu annos täyteen kiitos tästä.

    Äänestä

  • hemmo kirjoitti:

    "Mä en kuulkaa näin pienellä liksalla ala kertoilemaan kenelekään, mitäs ne on pahat virheet siinä."

    Eli teet kaiken vain rahan takia ? ja ilmeisesti olet tehnyt useita kerneleitä ihan noin vaan.

    Tai sitten yrität vain päteä...

    "mutta siinä oli jo silloin nuokin virheet, johin viittasin ja joita myöhemmistäkään versioista ei ole kiivaista ja maailmanlaajuisista yrityksistä huolimatta löydety,"

    Olet siis vakavissasi sitä mieltä että 13 vuotiasta koodin osaa ei ole kirjoitettu moneen kertaan uusiksi ? just joo.

    ps. tuli päivän v*ttuilu annos täyteen kiitos tästä.

    miljoonat ja taas miljoonat eli ihan älyttömän monet henkilöt ynpäri maailmaa ovat kanssani yhtä mieltä siitä, että siinähän on Torvi-Valtsun kernelissäkin jotain vikaa, vaikka heistä eivät läheskään kaikki tällä tarkkuudellani tiedä, mitä vikaa ja missä kohdassa vikaa, mistä todisteena eli hyvinkin pitkälti pelkkien puheitten vakuutena voidaan milloin tahansa ja kiistatta perustellusti esittää se, että kaikki nuo henkilöt, joihin siinä viittasin, ovat valinneet windowsin kernelinkin, joka kuulkaa helkkarin hyvä: miljoonat ja miljoonat eli helkkarin monet tyytyväiset käyttäjät sen todistavat. Korjatkaa itte mokanne.

    Äänestä

aika kova

Äänestä

sulla on kyl kohta M$ asianajajat perässäsi..

Äänestä

millä softalla tää kääntyy?

Äänestä
  • softalla nimeltä aivot

    Äänestä

Kommentoi aloitusta


No Name kirjoitti:

/* Windows '98 source code */

/*
TOP SECRET Microsoft(c) Code
Project: Chicago(tm)
Projected release-date: Summer 1998
*/

#include "win31.h"
#include "win95.h"
#include "evenmore.h"
#include "oldstuff.h"
#include "billrulz.h"

#define INSTALL_HARD

char make_prog_look_big[1600000];

void main()
{
while(!CRASHED)
{
display_copyright_message();
display_bill_rules_message();
do_nothing_loop();
if (first_time_installation)
{
make_50_megabyte_swapfile();
do_nothing_loop();
totally_screw_up_HPFS_file_system();
search_and_destroy_the_rest_of_OS2();
hang_system();
}

write_something(anything);
display_copyright_message();
do_nothing_loop();
do_some_stuff();

if (still_not_crashed)
{
display_copyright_message();
do_nothing_loop();
basically_run_windows_3.1();
do_nothing_loop();
do_nothing_loop();
}
}

if (detect_cache())
disable_cache();

if (fast_cpu())
{
set_wait_states(lots);
set_mouse(speed, very_slow);
set_mouse(action, jumpy);
set_mouse(reaction, sometimes);
}


/* printf("Welcome to Windows 3.11");*/
/* printf("Welcome to Windows 95"); */
printf("Welcome to Windows 98");

if (system_ok())
crash(to_dos_prompt);
else
system_memory = open("a:\swp0001.swp",
O_CREATE);

while(something)
{
sleep(5);
get_user_input();
sleep(5);
act_on_user_input();
sleep(5);
}

create_general_protection_fault();
}

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu