Vous n'êtes pas identifié.

Annonces

Les pages de ce Forum sont exploitables par les Navigateurs FireFox, Google Chrome, Opera, Safari, Konqueror, Netscape & MSIE.
  • Index
  •  » Le C
  •  » Une vieillerie, juste pour le FuN !

#1 [↑] [↓]20/06/2006 02:28:09

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Une vieillerie, juste pour le FuN !

Bah, il n'y a pas tout... Manque les routines Assembleur (2)...
Et ce n'est plus du tout fonctionnel (pourtant, ça marchait super bien à l'époque)
[Vous devez être identifié pour voir le texte caché.]
Ah ah ah ah ah...
big_smile
Alain

Code :

/*************************************************************************/
/*                  */
/* Programme : TESTSYS.C (Vers 4.1)  Langage  : Turbo C 2.0 */
/*                  */
/* Objet  : Affichage des caract?ristiques syst?me pour micro-  */
/*    ordinateurs type IBM-PC/XT/AT/386 et compatibles  */
/*    dont le syst?me d'exploitation est MS-DOS.   */
/*    Programme non transportable !!!      */
/*                  */
/*    Options/Compiler/Model    : Tiny    */
/*    Options/Linker/Case-sensitive Link : Off    */
/*                  */
/* Date  : 25/07/89     Auteur  : Alain GAYDON */
/*                  */
/*************************************************************************/

#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <graphics.h>

/* un OCTET */

typedef unsigned char OCTET;

/* Constantes */

#define FAUX  0
#define VRAI  1

void main()
{
 int testproc(void);

 union    REGS Rin, Rout;
 struct   SREGS Sreg;
 unsigned long int  M_octets;
 unsigned short int  PC = 0, PC_XT = 0, PC_AT = 0, I_Pro = 0, k, l;
 int      GraphDriver, GraphMode;
 char     car;
 register unsigned int i, j;

/* taille prog CS/DS (64 Ko Mod Tiny) */

 unsigned int   Occ_Prog = 64;

/* initialisation mode vid?o 80x25 couleur */

 textmode(C80);
 directvideo = 0;
 clrscr();

/* titre */

 gotoxy(68, 1);
 textcolor(14);
 cputs("TESTSYS");
 textcolor(12);
 cputs(" V4.1");
 gotoxy(68, 2);
 printf("(c)1989, GNA");
 textcolor(15);
 gotoxy(1, 1);

/* type d'ordinateur */

 printf("Type de micro-ordinateur   : ");
 switch ((OCTET) peekb(0xF000, 0xFFFE))
  {
   case 0xFF : cprintf("PC ou compatible\r\n");
      PC = VRAI;
      break;
   case 0xFE : cprintf("PC-XT ou compatible\r\n");
      PC_XT = VRAI;
      break;
   case 0xFD : cprintf("PC Junior\r\n");
      PC = VRAI;
      break;
   case 0xFC : Rin.h.ah = 0xC0;
      int86x(0x15, &Rin, &Rout, &Sreg);
      switch (peekb(Sreg.es, Rout.x.bx + 3))
       {
        case 0x05 : cprintf("PS/2 mod?le 60\r\n");
           PC_AT = VRAI;
           break;
        case 0x04 : cprintf("PS/2 mod?le 50\r\n");
           PC_AT = VRAI;
           break;
        default : cprintf("PC-AT ou compatible\r\n");
           PC_AT = VRAI;
       }
      break;
   case 0xFB : cprintf("PC-XT ou compatible\r\n");
      PC_XT = VRAI;
      break;
   case 0xFA : cprintf("PS/2 mod?le 30\r\n");
      PC_AT = VRAI;
      break;
   case 0xF9 : cprintf("PC Convertible\r\n");
      PC_XT = VRAI;
      break;
   case 0xF8 : cprintf("PS/2 mod?le 80\r\n");
      PC_AT = VRAI;
      break;
   default : printf("???\n");
  }

/* bus extensions */

 printf("Type du bus d'extension   : ");
 if (PC_AT)
 {
  Rin.h.ah = 0xC0;
  int86x(0x15, &Rin, &Rout, &Sreg);
  if ((peekb(Sreg.es, Rout.x.bx + 5) >> 1) & 1)
  cprintf("architecture MCA\r\n");
  else cprintf("architecture ISA -> 16 bits\r\n");
 }
 else cprintf("architecture ISA -> 8 bits\r\n");

/* pr?sence de coprocesseur math?matique */

 printf("Coprocesseur math?matique  : ");
 int86(0x11, &Rin, &Rout);
 if ((Rout.x.ax >> 1) & 1)
 {
	cprintf("pr?sent -> ");
  switch (I_Pro)
   {
    case 4 : cprintf("int?gr? dans l'iAPX 80486");
      break;
    case 3 : cprintf("i80387");
      break;
    case 2 : cprintf("i80287");
      break;
    case 1 : cprintf("i8087");
      break;
    default : printf("???");
   }
  if ((PC_AT) && (I_Pro <4) && (I_Pro > 0)) cprintf(" ; IRQ 13\r\n");
  else printf("\n");
 }
 else cprintf("absent\r\n");

/* utilisation canal de DMA */

 printf("Contr?leur de DMA (8237A-5)  : ");
 int86(0x11, &Rin, &Rout);
 if ((PC || PC_XT) && ((Rout.x.ax >> 8) & 1)) cprintf("absent\r\n");
 else cprintf("pr?sent -> port 000, DRQ 1, DRQ 2, DRQ 3\r\n");

/* horloge temps r?el RTC sauvegard?e */

 if (PC_AT) printf("Horloge RTC (8254) sauvegard?e : ");
 else printf("Horloge RTC (8253-5) sauvegard?e : ");
 Rin.h.ah = 0x2A;
 intdos(&Rin, &Rout);     /* DH mois, DL jour */
 i = Rout.x.dx;
 Rin.h.ah = 0x04;
 int86(0x1A, &Rin, &Rout);   /* DH mois, DL jour : sortie en BCD */
 j = (((Rout.h.dh >> 4) * 10) + (Rout.h.dh & 0x0F)) * 256 +
  ((Rout.h.dl >> 4) * 10) + (Rout.h.dl & 0x0F);
 if (i == j) cprintf("pr?sente -> port 040, IRQ 8\r\n");
 else cprintf("absente ou hors service\r\n");

/* taille de la ROM BIOS */

 printf("Taille de l'EPROM de la ROM BIOS : ");
 j = 0;
 i = 0xF000;
 while (i <0xFFFE)
  {
	 if ((peekb(i, 0) != 0xFF) && (peekb(i, 1) != 0xFF)) j++;
  if (i <0xFF00) i += 0x0100;
  else i += 0x00FF;
  }
 cprintf("%d Ko\r\n", j * 4);

/* date de la ROM BIOS */

 printf("Date de la ROM BIOS    : ");
 i = peekb(0xF000, 0xFFFB) & 0x0F;
 j = peekb(0xF000, 0xFFFC) & 0x0F;
 if ((i <10) && (j <10) && (((i * 10) + j) > 79))
 {
  cprintf("%c%c/%c%c/%c%c\r\n", (OCTET) peekb(0xF000, 0xFFF8),
         (OCTET) peekb(0xF000, 0xFFF9),
         (OCTET) peekb(0xF000, 0xFFF5),
         (OCTET) peekb(0xF000, 0xFFF6),
         (OCTET) peekb(0xF000, 0xFFFB),
         (OCTET) peekb(0xF000, 0xFFFC));
 }
 else cprintf("absente\r\n");

/* signature de la ROM BIOS */

 printf("Signature de la ROM BIOS   : ");  /* pas de la tarte ! */
 k = 0;
 j = 0xE000;      /* adresse F000:E000 pour PC-XT et PC */
 i = 0xF000;
 while ((j <0xE100) && (k == 0)) /* recherche dans 255 car. apr?s E000 */
  {
  if ((peekb(i, j) == 0x28) && ((peekb(i, j + 1) == 0x43) ||
          (peekb(i, j + 1) == 0x63)) &&
          (peekb(i, j + 2) == 0x29)) /* (c) */
   {
   for (l = j; l <(j + 4); l++) cprintf("%c", peekb(i, l));
   j = l;
   k = 3;
   while ((k <40) &&
     (peekb(i, j) != 0x00) &&
     (peekb(i, j) != 0x40) &&
     (peekb(i, j) != 0x24) &&
     (!((peekb(i, j) <0x20) && (peekb(i, j) > 0x7D))) &&
     (!((peekb (i, j - 1) == 0x2E) && (peekb (i, j) == 0x20))))
     {
     cprintf("%c", peekb(i, j));
     j++;
     k++;
     }
   }
  else j++;
  }
 if (k == 41) cprintf("...");
 if (k > 0) printf("\n");
 else
 {
  j = 0x0000;     /* adresse F000:0000 pour PS/2 et PC-AT */
  while ((j <0x0100) && (k == 0))
   {
   if ((peekb(i, j) == 0x28) && ((peekb(i, j + 1) == 0x43) ||
           (peekb(i, j + 1) == 0x63)) &&
           (peekb(i, j + 2) == 0x29)) /* */
    {
    for (l = j; l <(j + 4); l++) cprintf("%c", peekb(i, l));
    j = l;
    k = 3;
    while ((k <40) &&
      (peekb(i, j) != 0x00) &&
      (peekb(i, j) != 0x40) &&
      (peekb(i, j) != 0x24) &&
      (!((peekb(i, j) <0x20) && (peekb(i, j) > 0x7D))) &&
      (!((peekb (i, j - 1) == 0x2E) &&
      (peekb (i, j) == 0x20))))
      {
      cprintf("%c", peekb(i, j));
      j++;
      k++;
      }
    }
   else j++;
   }
  if (k == 41) cprintf("...");
  if (k > 0) printf("\n");
  else cprintf("absente\r\n");
 }

/* ROM BIOS suppl?mentaires */

 printf("ROM BIOS suppl?mentaires paragr. : ");
 l = 0;
 k = 0;
 j = 0;
 i = 0xC000;
 while (i <0xD000)
  {
	 if ((peekb(i, 0) != 0xFF) && (peekb(i, 1) != 0xFF))
   {
   j++;
   if (k == 0)
    {
    k = 1;
    if (l <3) cprintf("%X ? ", i);
    }
   }
  else
   if (k == 1)
    {
    k = 0;
    l++;
    if (l <3) cprintf("%X, ", i - 1);
    }
  i += 0x0100;
  }
 if (k == 1)
 {
  l++;
  if (l <3) cprintf("%X, ", i - 1);
 }
 if (l > 2) cprintf("\b\b... ");
 if (j > 0) cprintf("\b\b -> %d Ko\r\n", j * 4);
 else cprintf("aucune\r\n");

/* cartouches ROM */

 printf("Cartouches ROM suppl?mentaires : ");
 l = 0;
 k = 0;
 j = 0;
 i = 0xD000;
 while (i <0xE000)
  {
	 if ((peekb(i, 0) != 0xFF) && (peekb(i, 1) != 0xFF)) j++;
  i += 0x0100;
  }
 if (j > 0) k++;
 i = 0xE000;
 while (i <0xF000)
  {
	 if ((peekb(i, 0) != 0xFF) && (peekb(i, 1) != 0xFF)) l++;
  i += 0x0100;
  }
 if (l > 0) k++;
 j += l;
 if (j > 0) cprintf("%d -> %d Ko\r\n", k, j * 4);
 else cprintf("aucune\r\n");

/* taille de la m?moire RAM */

 printf("Base RAM sur carte-m?re   : ");
 if (PC)
 {
  int86(0x11, &Rin, &Rout);
  switch ((Rout.x.ax >> 2) & 3)
   {
    case 3 : cprintf("64 Ko\r\n");
      break;
    case 2 : cprintf("48 Ko\r\n");
      break;
    case 1 : cprintf("32 Ko\r\n");
      break;
    case 0 : cprintf("16 Ko\r\n");
   }
 }
 else cprintf("uniquement sur PC et PC Junior\r\n");
 printf("RAM conventionnelle (max 640 Ko) : ");
 int86(0x12, &Rin, &Rout);
 cprintf("%u Ko -> %u Ko libres\r\n", Rout.x.ax,
          (allocmem(0xFFFF, 0) / 64) + Occ_Prog);

/* taille de la m?moire au dessus de 1 Mo */

 printf("RAM suppl?mentaire (extension) : ");
 if (PC_AT)
 {
  Rin.h.ah = 0x88;
  int86(0x15, &Rin, &Rout);
  if (Rout.x.ax != 0) cprintf("Hi-RAM -> %u Ko\r\n", Rout.x.ax);
  else cprintf("absente\r\n");
 }
 else cprintf("uniquement sur PC-AT et PS/2\r\n");

/* m?moire d'extension EMS */

 printf("RAM suppl?mentaire (expansion) : ");
 Rin.x.ax = 0x3567;
 intdosx(&Rin, &Rout, &Sreg);
 if ((Sreg.es != 0) && (Rout.x.bx != 0) &&
      (peekb(Sreg.es, 0x000A) == 0x45) &&
      (peekb(Sreg.es, 0x000B) == 0x4D) &&
      (peekb(Sreg.es, 0x000C) == 0x4D)) /* cha?ne "EMM" */
 {
  Rin.h.ah = 0x40;
  int86(0x67, &Rin, &Rout);
  switch (Rout.h.ah)
   {
    case 0x81 : cprintf("pr?sente (EMS hors service)\r\n");
       break;
    case 0x80 : cprintf("pr?sente (EMM hors service)\r\n");
       break;
    case 0x00 : Rin.h.ah = 0x46;
       int86(0x67, &Rin, &Rout);
       if (Rout.h.ah == 0) cprintf("EMM V%u -> ",
              Rout.h.al);
       Rin.h.ah = 0x42;
       int86(0x67, &Rin, &Rout);
       if (Rout.h.ah == 0) cprintf("%u", Rout.x.dx);
       else printf("???");
       cprintf(" pages EMS install?es\r\n");
       break;
    default : printf("???\n");
   }
 }
 else cprintf("absente\r\n");

/* affichage vid?o initial */

 printf("Mode vid?o (initial)    : ");
 int86(0x11, &Rin, &Rout);
 switch (Rout.x.ax & 48)
  {
   case 48 : cprintf("monochrome -> 80 x 25\r\n");
     break;
   case 32 : cprintf("couleur -> 80 x 25\r\n");
     break;
   case 16 : cprintf("couleur -> 40 x 25\r\n");
     break;
   default : printf("???\n");
	 }

/* type de l'adaptateure vid?o (graphique ou texte) */

 printf("Adaptateur vid?o     : ");
 GraphDriver = DETECT;
 detectgraph(&GraphDriver, &GraphMode);
 switch (GraphDriver)
  {
   case 10 : cprintf("PC 3270 -> 720 x 350\r\n");
     break;
   case 9 : Rin.h.ah = 0x12;
     Rin.h.bl = 0x10;
     int86(0x10, &Rin, &Rout);
     cprintf("VGA (%d Ko) -> 640 x 480 ; seg %X\r\n",
       (Rout.h.bl + 1) * 64,
       ((Rout.h.bl + 1) > 1) ? 0xA000 : 0xB000);
     break;
   case 8 : cprintf("AT&T 400 -> 640 x 400\r\n");
     break;
	 case 7 : cprintf("Hercules (32 Ko) -> 720 x 348 ; seg B000\r\n");
     break;
   case 6 : cprintf("IBM 8514 -> 1024 x 768\r\n");
     break;
   case 5 : Rin.h.ah = 0x12;
     Rin.h.bl = 0x10;
     int86(0x10, &Rin, &Rout);
     cprintf("EGA mono (%d Ko) -> 640 x 350 ; seg B000\r\n",
       (Rout.h.bl + 1) * 64);
     break;
   case 4 :
   case 3 : Rin.h.ah = 0x12;
     Rin.h.bl = 0x10;
     int86(0x10, &Rin, &Rout);
     cprintf("EGA (%d Ko) -> 640 x 350 ; seg %X\r\n",
       (Rout.h.bl + 1) * 64,
       ((Rout.h.bl + 1) > 1) ? 0xA000 : 0xB000);
     break;
   case 2 : cprintf("MCGA -> 640 x 480\r\n");
     break;
   case 1 : cprintf("CGA (16 Ko) -> 640 x 200 ; seg B800\r\n");
     break;
   default : cprintf("MDA (8 Ko) -> texte 80 x 25 ; seg B000\r\n");
	 }

/* adresse du port vid?o */

 printf("Adresse du contr?leur vid?o CRT : ");
 cprintf("port %X", peek(0x40, 0x63));
 printf("\n");

/* nombre de disques durs */

 printf("Nombre de disques durs   : ");
 j = peekb(0x0040, 0x0075);
 if (j > 0)
 {
  cprintf("%u ->", j);
  Rin.h.ah = 0x08;
  Rin.h.dl = 0x7F + j;
  int86(0x13, &Rin, &Rout);
  if (Rout.h.dl == j)
  {
   for (i = 1; i <(j + 1); i++)
    {
    Rin.h.ah = 0x08;
    Rin.h.dl = 0x7F + i;
    int86(0x13, &Rin, &Rout);
    if (!(Rout.x.cflag & 1))
     {
     M_octets = (Rout.h.cl & 0x3F);
     M_octets *= Rout.h.ch + ((Rout.h.cl >> 6) * 256);
     M_octets *= Rout.h.dh + 1;
     M_octets /= 2048;
     cprintf(" %ld Mo,", M_octets);
     }
    else
     {
     printf(" ???");
     cprintf(",");
     }
    }
   cprintf("\b ;");
   if (PC_XT) cprintf(" port 320, IRQ 5\r\n");
   else if (PC_AT) cprintf(" port 1F0, IRQ 6\r\n");
    else printf("\b \n");
  }
  else printf(" ???\n");
 }
 else cprintf("aucun\r\n");

/* nombre de lecteurs de disquettes */

 printf("Nombre de lecteurs de disquettes : ");
 int86(0x11, &Rin, &Rout);
 if (Rout.x.ax & 1)
 {
  j = ((Rout.x.ax >> 6) & 3) + 1;
  if (PC_AT)
  {
   cprintf("%d ->", j);
   for (i = 1; i <(j + 1); i++)
    {
    Rin.h.ah = 0x15;
    Rin.h.dl = i - 1;
    int86(0x13, &Rin, &Rout);
    if (!(Rout.x.cflag & 1))
     {
     switch (Rout.h.ah)
       {
       case 2 : cprintf(" 2S/HD,");
         break;    /* haute densit? */
       case 1 : cprintf(" 2S/2D,");
         break;    /* double densit? */
       default : printf(" ???");
         cprintf(",");

       }
     }
    else
     {
     printf(" ???");
     cprintf(",");
     }
    }
   cprintf("\b ;");
  }
  else cprintf("%d ->", j);
  cprintf(" port 3F0, IRQ 6\r\n");
 }
 else cprintf("aucun\r\n");

/* nombre et adresse des ports s?rie */

 printf("Nombre de ports s?rie (RS232) : ");
 int86(0x11, &Rin, &Rout);
 j = (Rout.x.ax >> 9) & 0x03;
 if (j > 0)
 {
  cprintf("%d ->", j);
  if (j > 2) k = 2;
  else k = j;
  k *= 2;
  for (i = 0; i <k; i += 2)
   cprintf(" COM%u: port %X,", (i / 2) + 1, peek(0x0040, i));
  if (j > 2) cprintf("\b... ");
  printf("\b \n");
 }
 else cprintf("aucun\r\n");

/* nombre et adresse des ports parall?les */

 printf("Nombre de ports parall?les  : ");
 int86(0x11, &Rin, &Rout);
 j = Rout.x.ax >> 14;
 if (j > 0)
 {
  cprintf("%d ->", j);
  if (j > 2) k = 2;
  else k = j;
  k *= 2;
  k += 8;
  for (i = 8; i <k; i += 2)
   cprintf(" LPT%u: port %X,", ((i - 8) / 2) + 1, peek(0x0040, i));
  if (j > 2) cprintf("\b... ");
  printf("\b \n");
 }
 else cprintf("aucun\r\n");

/* pr?sence de port manette et adresse ?ventuelle */

 printf("Port manettes     : ");
 int86(0x11, &Rin, &Rout);
 if ((Rout.x.ax >> 12) & 1) cprintf("pr?sent -> port 200\r\n");
 else cprintf("absent\r\n");

/* pr?sence de la souris */

 printf("Dispositif de pointage (souris) : ");
 Rin.x.ax = 0x3533;
 intdosx(&Rin, &Rout, &Sreg);
 if ((Sreg.es != 0) && (Rout.x.bx != 0))
 {
  Rin.x.ax = 0x0000;
  int86(0x33, &Rin, &Rout);
  if (Rout.x.ax != 0x0000)
  {
   i = Rout.x.bx;
   Rin.x.ax = 0x0024;
   int86(0x33, &Rin, &Rout);
   switch (Rout.h.ch)
    {
     case 5 : cprintf("HP");
       break;
     case 4 : cprintf("PS/2");
       break;
     case 3 : cprintf("InPort");
       break;
     case 2 : cprintf("S?rie");
       break;
     case 1 : cprintf("Bus");
       break;
     default : printf("???");
    }
   if ((Rout.h.ch <6) && (Rout.h.ch > 0))
   cprintf(" (V%x.%x)", Rout.h.bh, Rout.h.bl);
   cprintf(" -> %d boutons", i);
   if ((Rout.h.ch <6) && (Rout.h.ch > 0))
   cprintf(" ; IRQ %u\r\n", Rout.h.cl);
   else printf("\n");
  }
  else cprintf("absent\r\n");
 }
 else cprintf("absent\r\n");

/* version du dos utilis? */

 printf("Version du DOS utilis?   : ");
 Rin.h.ah = 0x30;
 intdos(&Rin, &Rout);
 if (Rout.h.al == 0x00) cprintf("DOS 1.%d", Rout.h.ah);
 else cprintf("DOS %d.%d", Rout.h.al, Rout.h.ah);

/* F I N */

 gotoxy(68, 25);
 printf("[Esc] -> Fin");
 gotoxy(69, 25);
 car = 0x00;
 while(!(car == 0x1B)) car = getch();
 textcolor(7);
 clrscr();
}

Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#2 [↑] [↓]20/06/2006 02:47:52

Seb
Googlebot Invocator
Seb
Date d'inscription: 11/04/2006
Messages: 325

Re: Une vieillerie, juste pour le FuN !

l'antiquité big_smile


Hors ligne

 

#3 [↑] [↓]20/06/2006 11:43:26

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

Oui, une bonne vieille antiquité...
Mais il fallait bien connaître les machines et les différentes versions MS-DOS pour arriver à développer un truc pareil... En plus, cela permettait à coup sûr de mettre le doigt sur une panne matérielle sournoise. Toute mon équipe Micro l'utilisait ! C'était très pratique comme truc !

Par la suite, quand je bossais à Sophia-Antipolis, j'ai écrit en C-shell un prog d'install "full" automatique de SGBD Oracle... Une autre paire de manches... Idem, très bien connaître les diverses machines (savoir détecter sur quelle bécane l'appli tourne) et très bien connaître sa config (c'est le prog qui scannait tout - une sorte de Bot) il suffisait ensuite de donner le nom du FS (filesystem de destination) il était créé automatiquement à la bonne taille et les UID et PWD du SU (Super user) Oracle, pour l'admin !

Puis, j'ai créé une procédure universelle (toujours en C-Shell) d'installation automatique de Patches et Updates divers (Système ou Applicatif)... Pareil... On mettait le CD dans le lecteur, on lançait le truc (install.sh + [enter]) et on se cassait... Implantable, la proc !
Pendant que le bazar bossait, on pouvait aller draguer les secrétaires à la machine à café...
La mienne, trop jalouse, était enfermée à double tour dans mon bureau. Ah ah ah ah ah...

C'était le bon temps... Elle était belle la vie !
wink
Al

PS :Et je me suis aussi pelé des tas de programmes automatiques pour le passage à l'an 2000 !
Mais ça, c'est encore une autre histoire... pitting, quelle galère ! Tout ça pour des économies de bout de chandelles (ans sur 2 chiffres au lieu de 4) mais au début, la mémoire était tellement chère... Et puis tout le monde (même moi) croyait que tout aurait changé plus vite... Mais non ! OOPS !
Tout cela sur des Minis, des Moyens et des Gros Systèmes (Mainframes)... Faut vraiment être taré !

http://www.cigiema.fr/images/seo.gif


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#4 [↑] [↓]20/06/2006 14:14:54

tictact
Ex Admin Zen
tictact
Lieu: 1ère rizière à gauche
Date d'inscription: 11/04/2006
Messages: 1106
Site web

Re: Une vieillerie, juste pour le FuN !

vieillerie ??
javascript est basé là dessus, si je me trompe
les étudiants en informatique avalent encore du C et C++


même éclairés avec des ampoules à led, les black holes trous noirs ne sont pas des aires de jeu pour chat
j'ai rêvé de mille et un chemins, mais à mon réveil, j'ai repris le mien

Hors ligne

 

#5 [↑] [↓]20/06/2006 16:09:15

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

Oui, une vieillerie, dans ce cas précis...
Le matériel a tellement évolué depuis 1990 que ce programme (celui dont le code est donné) ne fonctionne plus sur les nouvelles machines (il teste le matériel)...
Bien sûr que le C est toujours là, avec C++, C#, Java, Java Script, C-Shell et PHP...
Certains langages sont compilés, d'autres interprétés, d'autres parsés par un préprocesseur...
whistling
Al


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#6 [↑] [↓]20/06/2006 23:57:39

Horslemonde
Ami qui a vu l'Ours
Horslemonde
Lieu: SDF, près des Ours
Date d'inscription: 14/04/2006
Messages: 418
Site web

Re: Une vieillerie, juste pour le FuN !

Le C? Oui, encore que ça c'est du turboC bien français (à l'époque). Moi, je préfère le B qui lui a donné naissance (B comme Bell)... C++, rien à voir avec C, en dehors de la syntaxe... happy
Je vois qu'Alain range ses placards tout de même tous les 10 ans... roll
(Peut-être que Dom l'y a obligé?...) whistling

Mais je suis témoin que ça marchait...

Dernière modification par Horslemonde (20/06/2006 23:58:23)



C'est pas la première qui fait Meuhhh qui fait le plus de lait ! (dicton personnel, copié dans un poulailler)

L'Art du Tricot - Forum Art du Tricot - Annuaire Art du Tricot

Hors ligne

 

#7 [↑] [↓]19/04/2007 02:58:48

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

J'ai retrouvé bien pire !
Accrochez vous aux branches...

Code :

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <signal.h>
#include <stdio.h>
#include <tai.h>
#include <time.h>

#define COM_BULL "com_bull.conf" /* nom du fichier de configuration */
#define ENTETE_MESSAGE_DPS7 "TCT01 " /* entête du msg transmis au dps7 */
#define ERREUR_SYSTEME "2" /* erreur remontée à la tache UNIX */   
#define FIN_TRANSACTION "1\n" /* fin de la transaction avec le dps7 */
#define SUITE_TRANSACTION "0\n" /* suite de la transaction avec le dps7 */
#define AUTRE_ECRAN '0' /* transaction avec le dps7 non terminée */
#define TIMEOUT_MSGSND 2 /* attente de file bloquée */
#define TIMEOUT_MSGRCV 5 /* attente de file bloquée */
#define TIMEOUT_READ 5 /* attente d'une réponse du dps7 */
#define DELAI5 5 /* de 5 secondes */
#define DELAI10 10 /* de 10 secondes */
#define LG_BUFFER_EMI 2000 /* longueur du buffer d'émission */
#define LG_BUFFER_REC 2000 /* longueur du buffer de réception */
#define HEURE_SEM 17 /* heure d'arrêt en semaine */
#define MIN_SEM 25 /* minute d'arrêt en semaine */
#define HEURE_VEN 11 /* heure d'arrêt vendredi */
#define MIN_VEN 50 /* minute d'arrêt vendredi */


struct tdc st_tdc;

struct cnftgt st_cnftgt;

int  i_msqin;
int  i_msqout;
void alarme();
char ch_buffer[132];
int  i_buffer;
extern int  errno;
struct msqid_ds  st_msqds,*BUF_IPC_STAT;
struct t_st_msg {
    long mtype;
    char mtext[128];
    }st_msgin,st_msgout;
char buf_emi[LG_BUFFER_EMI];
char buf_rec[LG_BUFFER_REC];
int  i_bufrec = 0;
int  lg_bufrec = 0;

int jour, heure, min;
struct tm *recup_heure;

main(argc,argv)
int  argc;
char **argv;
{
char ch[LG_BUFFER_REC];
int  traite=0;
BUF_IPC_STAT = &st_msqds;
setpgrp();
/*
vérification de la non existence d'une tache servdps7
*/
/*
if ( system("ps -ef | grep servdps7 | wc -l | grep '  3' >/dev/null") != 0 )
  {
  printf("Le serveur DPS7 est déjà lancé\n");
  exit(-1);
  }
*/


/*
création des files d'attente de communication entre les tâches UNIX et
servdps7
*/
if ( creer_file() == -1 )
  {
  printf("servdps7 : arrêt de servdps7\n");
  exit(-1);
  }

/*
strcpy(ch_correspondant,argv[1]);
strcpy(ch_utilisateur,argv[2]);
strcpy(ch_projet,argv[3]);
strcpy(ch_motpasse,argv[4]);
*/

/*
contrôle connexion au tds 
positionnement d'une fonction de déroutage pour autoriser les time out
*/
signal(SIGALRM,alarme);
if (connexion()==0)
  {
  connectdatanet("PROG1","COMBULL"," ","COMBULL1");
  
  if (testconnect()==1)
    {
    do
    {
    #ifdef TEST
    printf("\nboucle main: début traite_question\n");
    #endif
    traite = traiter_question();
    #ifdef TEST
    printf("boucle main: fin traite_question = %d\n",traite);
    #endif
    } while(traite != -1);
    }
  }
supprimer_file();
deconnexion();
}


int  test_heure_arret()
{
time_t heure;
time(&heure);
recup_heure = localtime(&heure);

jour = recup_heure->tm_wday;
heure = recup_heure->tm_hour;
min = recup_heure->tm_min;

if  ((jour == 5 && heure == HEURE_VEN && min >= MIN_VEN) ||
   (jour != 5 && heure == HEURE_SEM && min >= MIN_SEM))
  {
  #ifdef TEST
  printf("\n*** IL EST %d H %d MN : ARRET DU SERVEUR ***\n",heure,min);
  #endif
  return(1);

  }
else {
  #ifdef TEST
  printf("\n*** IL EST %d H %d MN : ***\n",heure,min);
  #endif
  return(0);
  }
}


int  deconnexion()
{
if (envoi("$*$dis") != 0)
  {
  #ifdef TEST
  printf("déconnexion :pb envoi $*$dis\n");
  #endif
  }
if (lit_jusqua("$$ 0900")!=0)
  {
  #ifdef TEST
  printf("déconnexion :pb lit_jusqua $$0900\n");
  #endif
  }
tclose(&st_tdc);
if (st_tdc.cr_exec != 0 )
  {
  #ifdef TEST
  printf("déconnexion :pb tclose\n");
printf("déconnexion :cr_exec = %d\n",st_tdc.cr_exec);
  #endif
  sleep(2);
  return(-1);
  }
return(0);
}

int  connexion()
{
FILE *fp;
char ch_libelle[32];
int  i;

fp = fopen(COM_BULL,"r");
if ( fp == NULL )
  {
#ifdef TEST
  printf("servdps7 : ouverture du fichier %s impossible\n",COM_BULL);
#endif
  return(-1);
  }
fscanf(fp,"%s %s\n",ch_libelle,st_tdc.typ_tam);
fscanf(fp,"%s %d\n",ch_libelle,&st_tdc.delai);
fscanf(fp,"%s %d\n",ch_libelle,&st_cnftgt.as_ae);
fscanf(fp,"%s %d\n",ch_libelle,&st_cnftgt.adremet1);
fscanf(fp,"%s %x\n",ch_libelle,&st_cnftgt.adremet2);
fscanf(fp,"%s %d\n",ch_libelle,&st_cnftgt.typemet1);
fscanf(fp,"%s %d\n",ch_libelle,&st_cnftgt.typemet2);
fscanf(fp,"%s %x\n",ch_libelle,&st_cnftgt.symbole);
fscanf(fp,"%s %d\n",ch_libelle,&st_cnftgt.lngpage);
fscanf(fp,"%s %d\n",ch_libelle,&st_cnftgt.lngligne);
fscanf(fp,"%s %x\n",ch_libelle,&st_cnftgt.modclas);
fscanf(fp,"%s %x\n",ch_libelle,&st_cnftgt.typappar);
fscanf(fp,"%s %d\n",ch_libelle,&st_cnftgt.lgadresse);
fscanf(fp,"%s %s\n",ch_libelle,st_cnftgt.adrtpac);
fscanf(fp,"%s %d\n",ch_libelle,&st_cnftgt.lgfacilitie);
fscanf(fp,"%s %s\n",ch_libelle,st_cnftgt.facil);
fscanf(fp,"%s %x\n",ch_libelle,&st_cnftgt.numcv);
fscanf(fp,"%s %d\n",ch_libelle,&st_cnftgt.indicseg);
fclose(fp);
#ifdef TEST
printf("servdps7 : typ_tam = %s\n",st_tdc.typ_tam);
printf("servdps7 : delai = %d\n",st_tdc.delai);
printf("servdps7 : as_ae = %d\n",st_cnftgt.as_ae);
printf("servdps7 : adremet1 = %d\n",st_cnftgt.adremet1);
printf("servdps7 : adremet2 = 0x%x\n",st_cnftgt.adremet2);
printf("servdps7 : typemet1 = %d\n",st_cnftgt.typemet1);
printf("servdps7 : typemet2 = %d\n",st_cnftgt.typemet2);
printf("servdps7 : symbole = 0x%x\n",st_cnftgt.symbole);
printf("servdps7 : lngpage = %d\n",st_cnftgt.lngpage);
printf("servdps7 : lngligne = %d\n",st_cnftgt.lngligne);
printf("servdps7 : modclas = 0x%x\n",st_cnftgt.modclas);
printf("servdps7 : typappar = 0x%x\n",st_cnftgt.typappar);
printf("servdps7 : lgadresse = %d\n",st_cnftgt.lgadresse);
printf("servdps7 : adrtpac = %s\n",st_cnftgt.adrtpac);
printf("servdps7 : lgfacilitie = %d\n",st_cnftgt.lgfacilitie);
printf("servdps7 : facil = %s\n",st_cnftgt.facil);
printf("servdps7 : numcv = 0x%x\n",st_cnftgt.numcv);
printf("servdps7 : indicseg = %d\n",st_cnftgt.indicseg);
#endif
st_tdc.lg_emi = LG_BUFFER_EMI;
st_tdc.lg_rec = LG_BUFFER_REC;
st_tdc.delai = DELAI10;
topen(&st_tdc,&st_cnftgt);
st_tdc.delai = DELAI5;
if (st_tdc.cr_exec != 0 )
  {
  #ifdef TEST
  printf("servdps7 : erreur à la connexion\n");
  printf("servdps7 : cr_exec = %d\n",st_tdc.cr_exec);
  #endif
  return(-1);
  }
  else
  {
  return(0);
  }
}

int connectdatanet(mailbox,util,proj,passe)
char *mailbox;
char *util;
char *proj;
char *passe;
{ 
char ch[LG_BUFFER_REC];
 if (!lit_jusqua("$$ 4700"))
  { do
   envoi(" ");
  while(!lit_jusqua("$*$"));
  envoi("CN");
  lit(ch);}
 envoi(mailbox);
 lit(ch);
 envoi(util);
 lit(ch);
 envoi(proj);
 lit(ch);
 envoi(passe);
}

int testconnect(void)
{
char ch[LG_BUFFER_REC];
 lit(ch);
 if (strstr(ch,"$$ 0100"))
  {
  #ifdef TEST
    printf("testconnect : OK :$$ 0100 recu \n");
  #endif
  lit(ch);
  if (strstr(ch,"ACCUEIL")==0)
   {printf("On est d_j_ dans une transaction\n");
   envoi("1");
   lit(ch); }
  else
   {envoi("$*$brk");
   lit(ch);
   envoi("$*$brk");
   lit_jusqua("BREAK"); }
  return(1);
  }
 else
  { printf("Erreur controle d'accès : (%s)\n",ch);
   if (strstr(ch,"CONNEXION REFUSEE")!=0)
    {
    #ifdef TEST
    printf("CONNEXION REFUSEE -> analyse \n");
    if (strstr(ch,"004")!=0)
    printf("CONNEXION REFUSEE : TRANSACTIONNEL NON LANCE\n"); 
    #endif
    }
   lit_jusqua("$$$");
  return(0);
  }
}

int  envoi(ch_requete)
char *ch_requete;
{
st_tdc.lg_emi = strlen(ch_requete);
strcpy(buf_emi,ch_requete);
st_tdc.delai = DELAI10;
#ifdef TEST  
   printf("servdps7 : envoi : buf_emi = %s\n",buf_emi);
#endif
twrite(&st_tdc,buf_emi);
st_tdc.delai = DELAI5;
if ( st_tdc.cr_exec != 0 )
  { 
  #ifdef TEST
    printf("servdps7 : envoi : erreur à l'émission\n");
    printf("servdps7 : envoi : cr_exec = %d\n",st_tdc.cr_exec);
  #endif
  return(-1);
  }
return(0);
}

int lit(ch)
char *ch;
{
int rc;
int i;
int j;
  st_tdc.lg_rec = LG_BUFFER_REC;
  st_tdc.delai = DELAI5;
  rc=tread(&st_tdc,buf_rec);
  for(i=0,j=0;i<st_tdc.cb_rec && j<70;i++)
    {
    if (buf_rec[i] >= 32 && buf_rec[i] <= 127)
      {
      ch[j] = buf_rec[i];
      j++;
      }
    }
  ch[j]=0;
  if (st_tdc.cr_exec == 50303)
    {
    strncpy(ch,"TIME OUT",9);
    }
  #ifdef TEST
  printf("servdps7 : lit : cr_exec=%d\n",st_tdc.cr_exec);
  printf("servdps7 : lit : buf_rec=%s\n",ch);
  #endif
}

int lit_jusqua(ch)
char *ch;
{
char chlu[LG_BUFFER_REC];
#ifdef TEST
  printf("lit_jusqua : début \n");
#endif
do
  lit(chlu);
  while (strstr(chlu,ch)==0 && ((st_tdc.cr_exec==0)||(st_tdc.cr_exec==5031
6)));
#ifdef TEST
  printf("lit_jusqua : fin \n");
#endif
 if (strstr(chlu,"TIME OUT") == 0)
  return(1);
 if ((st_tdc.cr_exec!=0)&&(st_tdc.cr_exec!=50316))
  return(-1);
 else
  return(0);
}


int  supprimer_file()
{
if ( msgctl(i_msqin,IPC_RMID,0) == -1 )
  {
#ifdef TEST
  printf("servdps7 : suppression de la file d'attente QUESTION impossible\
n");
  printf("servdps7 : errno = %d\n",errno);
#endif
  }
if ( msgctl(i_msqout,IPC_RMID,0) == -1 )
  {
#ifdef TEST
  printf("servdps7 : suppression de la file d'attente REPONSE impossible\n
");
  printf("servdps7 : errno = %d\n",errno);
#endif
  }
return(0);
}

int  creer_file()
{
i_msqin = msgget(ftok("/usr/bin",'1'),0);
msgctl(i_msqin,IPC_RMID,0);
i_msqin = msgget(ftok("/usr/bin",'1'),IPC_CREAT | 0666 );
if ( i_msqin == -1 )
  {
#ifdef TEST
  printf("servdps7 : création de la file d'attente QUESTION impossible\n")
;
  printf("servdps7 : errno = %d\n",errno);
#endif
  return(-1);
  }
i_msqout = msgget(ftok("/usr/bin",'2'),0);
msgctl(i_msqout,IPC_RMID,0);
i_msqout = msgget(ftok("/usr/bin",'2'),IPC_CREAT | 0666 );
if ( i_msqout == -1 )
  {
#ifdef TEST
  printf("servdps7 : création de la file d'attente REPONSE impossible\n");
  printf("servdps7 : errno = %d\n",errno);
#endif
  return(-1);
  }
return(0);
}



int  traiter_question()
{
int  arret_tds,i_retour, b_heure, message_recu ;
char ch[LG_BUFFER_REC];


if (msgctl(i_msqin,IPC_STAT,BUF_IPC_STAT) == -1)
  {
  printf("traiter_question : PB IPC_STAT sur MSQUIN \n");
  }

#ifdef TEST
  printf("traiter_question : %d messages ds i_msqin\n",st_msqds.msg_qnum);
#endif

arret_tds = test_heure_arret();
if (arret_tds == 1 && st_msqds.msg_qnum == 0) 
  {
  return(-1);
  }

heure = 0;
while (st_msqds.msg_qnum == 0)
  {
  if (b_heure >= 300)
    {
    #ifdef TEST
    printf("traiter_question : controle TDS début %d\n",b_heure);
    #endif
    arret_tds = test_heure_arret();
    if (arret_tds == 1 && st_msqds.msg_qnum == 0)
      {
      return(-1);
      }
    envoi("SORTIE");
    lit_jusqua("FIN NOR");
    b_heure = 0;
    #ifdef TEST
    printf("traiter_question : controle TDS fin\n");
    #endif
    }
  else
    {
    sleep(1);
    msgctl(i_msqin,IPC_STAT,BUF_IPC_STAT);
    b_heure++;
    }

  }

if ( msgrcv(i_msqin,&st_msgin,128,0,MSG_NOERROR) == -1 )
  {
  #ifdef TEST
    printf("traiter_question : fin attente message : msgrcv\n");
  #endif
  #ifdef TEST
    printf("servdps7 : erreur à la réception d'une question\n");
    printf("servdps7 : errno = %d\n",errno);
    sleep(2);
  #endif
  return(-1);
  }

/*
arrivée du message de service qui déclenche l'arrêt de servdps7
*/
if ( st_msgin.mtype == 1 )
  {
  return(-1);
  }
st_msgout.mtype = st_msgin.mtype;

#ifdef TEST
  printf("traiter_question : deb envoi_requete \n");
#endif

i_retour = envoi_requete(st_msgin.mtext);
if ( i_retour == -1 )
  {
  strcpy(st_msgout.mtext,ERREUR_SYSTEME);
  #ifdef TEST 
    printf("traiter_question :envoi_requete : cr = -1\n");
    debug();
  #endif
  return (-1);
  }
else
  {
  #ifdef TEST
  printf("traiter_question : deb reception_reponse\n");
  #endif
  i_retour = reception_reponse(st_msgout.mtext);
  }
#ifdef TEST
  printf("traiter_question :envoi_reponse %s\n",st_msgout.mtext);
#endif
envoi_reponse();
return(i_retour);
}

int  debug()

{
int  choix;
char ch[LG_BUFFER_REC];

    do
      {
      printf("\nSaisir- 1 pour sortir\n");
      printf("  - 2 pour envoyer(ch) recevoir \n");
      printf("  - 3 pour lit_jusqua(ch) \n");
      printf("  - 4 pour envoyer(ch) \n");
      printf("  - 5 pour lire(ch) \n");
      printf("  - 6 pour close() \n");
      printf("  - 7 pour open() \n");
      scanf("%d",&choix);
      switch (choix)
        {
        case 1:
          break;
        case 2:
          printf(" chaîne envoyer_recevoir :?\n");
          scanf("%s",&ch);
          envoi(ch);
          lit(ch);
          break;
        case 3:
          printf(" chaîne lit_jusqua :?\n");
          scanf("%s",&ch);
          lit_jusqua(ch);
          break;
        case 4:
          printf(" chaîne envoyer:?\n");
          scanf("%s",&ch);
          envoi(ch);
          break;
        case 5:
          lit(ch);
          break;
        case 6:
          st_tdc.delai = DELAI10;
          tclose(&st_tdc);
          printf("close : cr_exec= %d\n",st_tdc.cr_exec);
          st_tdc.delai = DELAI5;
          break;
        case 7:
          topen(&st_tdc,&st_cnftgt);
          printf("open : cr_exec= %d\n",st_tdc.cr_exec);
          break;
        default:
          choix = 1;
          break;
        }
      } while(choix != 1);
}

int  envoi_reponse()
{
int  i_tempo;

/*
test du message bloqué dans la file d'attente REPONSE.
le dernier message déposé n'a pas été lu par la tâche UNIX concernée.
on lui donne encore TIMEOUT_MSGRCV secondes pour le lire.
on vide la file si le message est toujours bloqué
*/
for (i_tempo=0;i_tempo<TIMEOUT_MSGRCV;i_tempo++)
  {
  msgctl(i_msqout,IPC_STAT,&st_msqds);
  if ( st_msqds.msg_qnum == 0 )
    break;
  }
while ( msgrcv(i_msqout,&st_msgin,128,0,MSG_NOERROR|IPC_NOWAIT)==0);
/*
envoi de la réponse à la tache UNIX demandeuse.
*/
alarm(TIMEOUT_MSGSND);
if ( msgsnd(i_msqout,&st_msgout,128,0) == -1 )
  {
  alarm(0);
#ifdef TEST
  printf("servdps7 envoi_reponse : erreur à l'émission de la réponse\n");
  printf("servdps7 envoi_reponse : errno = %d\n",errno);
#endif
  return(-1);
  }
alarm(0);
return(0);
}


int  reception_reponse(ch_reponse)
{
/*
lecture des données venant du dps7 jusqu'à $$$.
*/
memset(ch_buffer,'\0',129);
i_buffer = 0;
#ifdef TEST
  printf("reception_reponse : début\n");
#endif
for (;;)
  {
  if ( iread(&ch_buffer[i_buffer]) != 0 )
    {
    strcpy(ch_reponse,ERREUR_SYSTEME);
    return(-1);
    }
  if ( ch_buffer[i_buffer] != '\n' )
    i_buffer++;
  else
    ch_buffer[i_buffer] = '\0';
  if ( i_buffer >= 5 )
    {
    if ( ch_buffer[i_buffer-1] == '$' &&
      ch_buffer[i_buffer-2] == '$' &&
      ch_buffer[i_buffer-3] == '$' )
      {
      memset(ch_reponse,'\0',128);
      memcpy(ch_reponse,&ch_buffer[1],i_buffer-4);
      /*
      gestion des réponse sur plusieurs messages
      */
      if ( ch_buffer[1] == AUTRE_ECRAN )
        {
        #ifdef TEST
        printf("reception_reponse+suite %s\n",SUITE_TRANSACTION);
        #endif
        return(1);
        }
      else
        {
        #ifdef TEST
        printf("reception_reponse fin %s\n",FIN_TRANSACTION);
        printf("reception_reponse : envoi 1\n");
        #endif
        envoi("1");
        #ifdef TEST
        printf("reception_envoi : lit -FIN NOR- \n");
        #endif
        lit_jusqua("FIN NOR");
        return(0);
        }
      }
    if ( i_buffer >= 128 )
      i_buffer--;
    }
  }
#ifdef TEST
printf("reception_reponse : fin\n");
#endif
}


int  envoi_requete(ch_requete)
char *ch_requete;
{
char ch_s[135];

strcpy(ch_s,ENTETE_MESSAGE_DPS7);
strcat(ch_s,ch_requete);
st_tdc.lg_emi = strlen(ch_s);
strcpy(buf_emi,ch_s);
twrite(&st_tdc,buf_emi);
  #ifdef TEST
   printf("envoi_requete -> DPS7 :%s\n",ch_s);
  #endif
if ( st_tdc.cr_exec != 0)
  {
  #ifdef TEST
  printf("envoi_requete: erreur a l'émission\n");
  printf("envoi_requete: cr_exec = %d\n",st_tdc.cr_exec);
  #endif
  return(-1);
  }
return(0);
}

void alarme()
{
signal(SIGALRM,alarme);
}


iread(buf)
char *buf;
{
if ( lg_bufrec <= 0 )
  {
  st_tdc.lg_rec = 2000;
  tread(&st_tdc,buf_rec);
  if ( st_tdc.cr_exec != 0 )
    {
    #ifdef TEST
    printf("servdps7 : iread : erreur à la réception\n");
    #endif
    return(st_tdc.cr_exec);
    }
  lg_bufrec = st_tdc.cb_rec;
  i_bufrec = 0;
  buf_rec[lg_bufrec] = '\0';
  #ifdef TEST
    printf("servdps7 : iread : cr_exec = %d\n",st_tdc.cr_exec);
    printf("servdps7 : iread : %s\n",buf_rec);
  #endif
  }
*buf = buf_rec[i_bufrec];
i_bufrec++;
if ( i_bufrec >= lg_bufrec )
  {
  lg_bufrec = 0;
  i_bufrec = 0;
  }
return(0);
}

Ah ah ah ah ah...
lipssealed
Alain AKA Arma


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#8 [↑] [↓]19/04/2007 23:10:01

Horslemonde
Ami qui a vu l'Ours
Horslemonde
Lieu: SDF, près des Ours
Date d'inscription: 14/04/2006
Messages: 418
Site web

Re: Une vieillerie, juste pour le FuN !

Le DPS7 était une très bonne machine !
Tu as enfin commencé à faire le ménage chez toi ? bleh bleh bleh bleh roll wub

<edit Crazy> Le DPS7xxx est TOUJOURS une bonne machine ! </edit>


C'est pas la première qui fait Meuhhh qui fait le plus de lait ! (dicton personnel, copié dans un poulailler)

L'Art du Tricot - Forum Art du Tricot - Annuaire Art du Tricot

Hors ligne

 

#9 [↑] [↓]20/04/2007 17:31:42

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

Oui, et j'en profite pour rendre hommage au Maître de GCOS (le SE des DPS7/7xxx), mon ami Puydebois.
On s'est parfois paye de sacrés pots de rires en faisant, tous les deux, des modifs de Mulet sur ce système bien balaise !
Ah ah ah, c'était l'époque héroïque des Gros Systèmes (mainframes) et de nos élucubrations Client-Serveur via TCP/IP...
C'était le bon temps... Je me rappelle encore quand j'allais tarl**zer chez Bull à Marne-la-Vallée ou à Champs-sur-Marne...
Oh, pitting, si vous saviez...
Si seulement vous pouviez imaginer...
lol
Alain AKA Arma


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#10 [↑] [↓]20/04/2007 17:43:32

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

Pitting, je me rappelle... Une fois, avec le Pr. Meinadier (spécialiste en Architecture des Systèmes d'Information)...
Un désaccord majuscule sur le Client-Serveur, en buvant, sans modération, quelques bières dans la zone piétonne devant l'entree principale (Porte Lescot, rue St-Denis) du Forum des Halles (à Paris)... Ils ne savaient plus ou se foutre les autres clients, tellement la discussion était vive... Ah ah ah ah ah...
Et on se retrouvait le lendemain à Sophia-Antipolis...
Quel bordel !
lol
Alain AKA Arma

PS : Allez, j'ai mis le lien ailleurs... Je peux donc le mettre ICI :
==> ftp://ftp2.cigiema.fr/cigiema/documents … eseaux.doc wink
Ah ah ah...
whistling

[Vous devez être identifié pour voir le texte caché.]

Dernière modification par Crazy (20/04/2007 18:10:18)



Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#11 [↑] [↓]20/04/2007 19:01:35

rgo74
Ami des Alpages
rgo74
Lieu: Toute la Haute Savoie
Date d'inscription: 17/05/2006
Messages: 911
Site web

Re: Une vieillerie, juste pour le FuN !

Tu es nostalgique Alain ? blush


Hors ligne

 

#12 [↑] [↓]20/04/2007 19:08:04

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

Oui, parfois...
happy
Alain AKA Arma


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#13 [↑] [↓]20/04/2007 19:55:14

rgo74
Ami des Alpages
rgo74
Lieu: Toute la Haute Savoie
Date d'inscription: 17/05/2006
Messages: 911
Site web

Re: Une vieillerie, juste pour le FuN !

En fait, depuis un an que je te connais --> Tu as (eu) une vie hyperactive ! --> Et c'est pas fini wink


Hors ligne

 

#14 [↑] [↓]21/04/2007 11:24:37

Horslemonde
Ami qui a vu l'Ours
Horslemonde
Lieu: SDF, près des Ours
Date d'inscription: 14/04/2006
Messages: 418
Site web

Re: Une vieillerie, juste pour le FuN !

Si Alain commence à nous ressortir des trucs du style :

*****    1) W 45: VERB IN AREA A *W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W
69    DISPLAY CARTE1.
$
***** 1) E 538: SYNTAX ERROR, EXPECTED WORD: "."(SCAN SUPPRESSED) *E*E*E*E ***** 1) I 3: SCAN RESUME *I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I *****    1) W 45: VERB IN AREA A *W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W*W

70
7:1.    * TOTAL PAR CLIENT.
72 >002A    BOU. READ FICAR INTO CARTE2 AT END
73    MOVE HIGH-VALUE TO NUM2.
74 >003A    DISPLAY CARTE2
75    IF NUM1 = NUM2 ADD SOM2 TO SOM1 GO TO BOU. 76    * ECRITURE
77 >004E    ECRI. MOVE NUM1 TO NUMI MOVE NOM1 TO NOMI
78    MOVE ADRESS1 TO ADRESSI MOVE SOM1 TO SOMI
$    $
*****    1> E 163: IDENTIFIER UNDEFINED (SCAN SUPPRESSED)    *E*E*E*E*E*E*E*E*E*E
*****    2> I    3: SCAN RESUME    *I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I*I

79    IF CO = 20 ADD 1 TO PA MOVE 0 TO CO
80    WRITE ZIMP FROM ENTETE AFTER PAGE

Je crains que le rappel des vieux souvenirs s'apparente au Délire Maniaco-dépressif avancé.
Avec risque de complication médico-légales à court terme !
C'est pas gai ! On va bientôt être de corvée au cimetière.
Peut-être même avant le résultat du Global Warming 2007...
C'est dommage, il était presque bien placé !
whistling whistling whistling whistling whistling whistling whistling whistling whistling whistling whistling whistling whistling
bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh bleh


C'est pas la première qui fait Meuhhh qui fait le plus de lait ! (dicton personnel, copié dans un poulailler)

L'Art du Tricot - Forum Art du Tricot - Annuaire Art du Tricot

Hors ligne

 

#15 [↑] [↓]21/04/2007 11:27:33

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

Euh, tu veux un extrait de programme sur cartes perforées ?
(en EBCDIC)
lol
Alain AKA Arma


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#16 [↑] [↓]21/04/2007 11:32:29

Horslemonde
Ami qui a vu l'Ours
Horslemonde
Lieu: SDF, près des Ours
Date d'inscription: 14/04/2006
Messages: 418
Site web

Re: Une vieillerie, juste pour le FuN !

Non, il te restes encore un peu de temps : je n'ai pas encore vu passer d'extraits en LISP.
Tu n'avais pas fait une thèse la-dessus ?
Il me semble en avoir un exemplaire dans mes archives...


C'est pas la première qui fait Meuhhh qui fait le plus de lait ! (dicton personnel, copié dans un poulailler)

L'Art du Tricot - Forum Art du Tricot - Annuaire Art du Tricot

Hors ligne

 

#17 [↑] [↓]21/04/2007 11:34:18

Horslemonde
Ami qui a vu l'Ours
Horslemonde
Lieu: SDF, près des Ours
Date d'inscription: 14/04/2006
Messages: 418
Site web

Re: Une vieillerie, juste pour le FuN !

Je dois aussi avoir dans ces archives les disques du Qbasic que tu affectionnais aussi...


C'est pas la première qui fait Meuhhh qui fait le plus de lait ! (dicton personnel, copié dans un poulailler)

L'Art du Tricot - Forum Art du Tricot - Annuaire Art du Tricot

Hors ligne

 

#18 [↑] [↓]21/04/2007 11:40:31

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

Oui, j'avais écrit (avec un pote) un Système Expert de niveau 1/A (SYSTEX - pas très original comme nom)...
Et un analyseur de langage naturel (EMOT - pas très original non plus).
Mais j'ai fini par jeter les docs et même les sources...
wink
Alain AKA Arma

Juste pour info :

Système Expert généraliste à chaînage bidirectionnel, logique des prédicats, logique des propositions, méta-connaissance et évaluation probabiliste des faits et des conséquents (SYSTEX 1A).
Analyseur syntaxico-sémantique (en Anglais) interface du SE (EMOT).

PS : Si tu as conservé tout cela quelque part, je veux bien que tu m'envoies un ZIP par eMail...
Quoique cela puisse aussi se retrouver dans les archives de l'ADELI dont j'ai fait partie quelques années...

--------------------------------------------------------------------------------
Il n'y a aucune page du site répondant à votre recherche sur "systex".
--------------------------------------------------------------------------------
Il n'y a aucune publication répondant à votre recherche sur "systex".
--------------------------------------------------------------------------------
Il y a un total de 0 document(s) et 0 mot-clef(s) répondant à votre recherche sur "systex"

Il a donc fini par être supprimé ! sad

PPS : J'ai aussi perdu le source (en APL) de la messagerie MINITEL que j'avais écrit dans les annees '80...

PPPS : Sans compter toutes les T@rlouzeries en FORTRAN, COBOL et PL/1... Ah ah ah ah ah...


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#19 [↑] [↓]21/04/2007 13:03:38

rgo74
Ami des Alpages
rgo74
Lieu: Toute la Haute Savoie
Date d'inscription: 17/05/2006
Messages: 911
Site web

Re: Une vieillerie, juste pour le FuN !

Hello juste pour intervenir dans votre dialogue de vieux loups bleh
HorsLeMonde tu es vache là avec la corvée de cimetière lol


Hors ligne

 

#20 [↑] [↓]21/04/2007 15:03:42

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

rgo74 a écrit :

HorsLeMonde tu es vache là avec la corvée de cimetière lol

En principe, il devrait y établir sa dernière demeure avant moi...
wacko
Alain AKA Arma

PS : Surtout que je préfère être incinéré...


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#21 [↑] [↓]29/04/2007 20:46:52

Crazy
Super Admin azimuté
Crazy
Lieu: Côte d'Azur - FRANCE
Date d'inscription: 10/04/2006
Messages: 5696
Site web

Re: Une vieillerie, juste pour le FuN !

Le Secrétaire de l'ADELI vient de me contacter par eMail...
Il a retrouvé le document sur le Système Expert !
Il va me le renvoyer...
C'est génial !
wink
Alain AKA Arma

PS : Si je le récupère sur fichier, je le mettrai dans le Forum approprié, pour ceux que cela intéresse.


Je suis Bon (avec un grand C) et Immortel... Jusqu'à preuve du contraire ! - I never die...
Chocoku - Sorcier Glouton - Tiger l'Osmose
MSnBetter ThanGoogle - Black Hattitude

I remember and I feel free! - I am the Killer of the Lambs!

Hors ligne

 

#22 [↑] [↓]30/04/2007 01:57:52

Horslemonde
Ami qui a vu l'Ours
Horslemonde
Lieu: SDF, près des Ours
Date d'inscription: 14/04/2006
Messages: 418
Site web

Re: Une vieillerie, juste pour le FuN !

Vache ? Tu crois ? Mais pourquoi ai-je donc cet avatar ?...


C'est pas la première qui fait Meuhhh qui fait le plus de lait ! (dicton personnel, copié dans un poulailler)

L'Art du Tricot - Forum Art du Tricot - Annuaire Art du Tricot

Hors ligne

 
  • Index
  •  » Le C
  •  » Une vieillerie, juste pour le FuN !

Pied de page des forums

Powered by PunBB modified
© Copyright 2002–2005, Rickard Andersson
© Interface & Functional Add-ons Copyright 2006-2007, by Crazy


RSS Forum CIGIEMA

© 2006-2012 / A. G.
CiGi€M@®, 1997-2012
IDDN Reproduction totale ou partielle strictement interdite
Contact :
/