First commit 20/04/1996
This commit is contained in:
		
							
								
								
									
										254
									
								
								DEMO.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										254
									
								
								DEMO.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,254 @@
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "c:\backup\fuentes\prn_cnt\prn_cnt.h"
 | 
			
		||||
 | 
			
		||||
#define INICIO     40
 | 
			
		||||
#define AMPLIACION  1
 | 
			
		||||
 | 
			
		||||
// S T R U C T U R E S //////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
typedef struct worm_typ
 | 
			
		||||
	{
 | 
			
		||||
	int y;       // current y position of worm
 | 
			
		||||
	int color;   // color of worm
 | 
			
		||||
	int speed;   // speed of worm
 | 
			
		||||
	int counter; // counter
 | 
			
		||||
 | 
			
		||||
	} worm, *worm_ptr;
 | 
			
		||||
 | 
			
		||||
worm worms[90]; // used to make the screen melt
 | 
			
		||||
 | 
			
		||||
unsigned int far *clock = (unsigned int far *)0x0000046C; // pointer to internal
 | 
			
		||||
                                                          // 18.2 clicks/sec
 | 
			
		||||
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
void Melt( void );
 | 
			
		||||
void InitScreen(void);
 | 
			
		||||
void RemapLeds(void);
 | 
			
		||||
void RemapInputs(void);
 | 
			
		||||
void cInfoMundo(void);
 | 
			
		||||
 | 
			
		||||
void main(void)
 | 
			
		||||
{
 | 
			
		||||
 char buffer[4096];
 | 
			
		||||
 char key2;
 | 
			
		||||
 int key = 0;
 | 
			
		||||
 | 
			
		||||
 gettext(1, 1, 80, 25, buffer);
 | 
			
		||||
 setcursortype(_NOCURSOR);
 | 
			
		||||
 | 
			
		||||
 Melt();
 | 
			
		||||
 InitScreen();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 Lpt_usado = 1;  /* Decimos que estamos usando el LPT1 */
 | 
			
		||||
 | 
			
		||||
 /* Hay un archivo de registros?
 | 
			
		||||
                SI:          LO UTILIZA PARA SABER QUE SALIDAS ESTA ACTIVADAS
 | 
			
		||||
                NO:          LAS RESETEA
 | 
			
		||||
 */
 | 
			
		||||
 if ( Register( LEER, "demo.std" ) != ok )
 | 
			
		||||
                                                 Reset_all();
 | 
			
		||||
 | 
			
		||||
   RemapLeds();
 | 
			
		||||
   while( key != 27 )
 | 
			
		||||
   {
 | 
			
		||||
       while( !kbhit() ) {
 | 
			
		||||
                           RemapInputs();
 | 
			
		||||
                           cInfoMundo();
 | 
			
		||||
                         };
 | 
			
		||||
         key = getch();
 | 
			
		||||
         key = key - '0';
 | 
			
		||||
         if ( key > 0 && key < 9 )
 | 
			
		||||
         {
 | 
			
		||||
 | 
			
		||||
          /* LEE EL ESTADO DE LA SALIDA INDICADA POR EL USUARIO     */
 | 
			
		||||
          key2 = Lee_Salida( (unsigned char)(key-1) + INICIO );
 | 
			
		||||
                        
 | 
			
		||||
          /* ESCRIBE EL ESTADO CONTRARIO (leido antes) DE LA SALIDA
 | 
			
		||||
              INDICADA POR EL USUARIO, ANTES.                       */
 | 
			
		||||
          Escribe_Salida( (unsigned char)(key-1+INICIO),  (char)!key2 );
 | 
			
		||||
          RemapLeds();
 | 
			
		||||
         }
 | 
			
		||||
         else key = key + '0';
 | 
			
		||||
 | 
			
		||||
   };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /* SI TODAS LAS SALIDAS ESTAN A CERO LAS RESETEA ( por simple formalidad )
 | 
			
		||||
     DE LO CONTRARIO GUARDA EL ESTADO DE LOS REGISTROS EN "demo.std"        */
 | 
			
		||||
  if ( Lee_Salidas( AMPLIACION, NULL ) == 0 )
 | 
			
		||||
                                              Reset_all();
 | 
			
		||||
  else
 | 
			
		||||
                                              Register( ESCRIBIR, "demo.std" );
 | 
			
		||||
                                               
 | 
			
		||||
   puttext(1, 1, 80, 25, buffer);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void cInfoMundo(void)
 | 
			
		||||
{
 | 
			
		||||
 static char state, pulse = 0;
 | 
			
		||||
 | 
			
		||||
 gotoxy( 2, 12 );
 | 
			
		||||
 textcolor(   state % 16 );  cprintf("I");
 | 
			
		||||
 textcolor( ++state % 16 );  cprintf("n");
 | 
			
		||||
 textcolor(   state % 16 );  cprintf("f");
 | 
			
		||||
 textcolor( ++state % 16 );  cprintf("o");
 | 
			
		||||
 textcolor(   state % 16 );  cprintf("M");
 | 
			
		||||
 textcolor( ++state % 16 );  cprintf("u");
 | 
			
		||||
 textcolor(   state % 16 );  cprintf("n");
 | 
			
		||||
 textcolor( ++state % 16 );  cprintf("d");
 | 
			
		||||
 textcolor(   state % 16 );  cprintf("o");
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RemapLeds(void)
 | 
			
		||||
{
 | 
			
		||||
gotoxy(22,9);
 | 
			
		||||
unsigned char i;
 | 
			
		||||
 | 
			
		||||
for( i=0; i<8; i++)
 | 
			
		||||
{
 | 
			
		||||
 if ( Lee_Salida( i + INICIO ) )
 | 
			
		||||
   textcolor( LIGHTGREEN );
 | 
			
		||||
   else
 | 
			
		||||
   textcolor( LIGHTRED );
 | 
			
		||||
   cprintf("<EFBFBD> ");
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RemapInputs(void)
 | 
			
		||||
{
 | 
			
		||||
int i;
 | 
			
		||||
 | 
			
		||||
for( i=0; i<8; i++)
 | 
			
		||||
{
 | 
			
		||||
 gotoxy((29+(i*2)),15-i);
 | 
			
		||||
 if ( Lee_Entrada( i + INICIO ) )
 | 
			
		||||
  {
 | 
			
		||||
   textcolor( LIGHTGREEN );
 | 
			
		||||
   cprintf("<EFBFBD>");
 | 
			
		||||
  } else {
 | 
			
		||||
   textcolor( LIGHTRED );
 | 
			
		||||
   cprintf("<EFBFBD>");
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
////        //////////////////////////////////////////////////////////////////
 | 
			
		||||
////  ////////////////////////////////////////////////////////////////////////
 | 
			
		||||
////  //////  //  //      //      //  //       //      //      ////  /////////
 | 
			
		||||
////    ////  //  //  //  //  //////  //  ///  //  //  //      //  /  ////////
 | 
			
		||||
////  //////  //  //  //  //  //////  //  ///  //  //  //  /////////  ////////
 | 
			
		||||
////  //////      //  //  //      //  //       //  //  //      //    /////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
////////  /////////////       ////////////////         //////  //  ///////////
 | 
			
		||||
////////  /////////////   ///  //////////////////  //////////  //  ///////////
 | 
			
		||||
////////  //     //////   ///  //      //      //  //      //  //  //      ///
 | 
			
		||||
////      //     //////      ////////  //  //  //  //////  //  //  /////// ///
 | 
			
		||||
////  //  //  /////////   ///////      //  //  //  //      //  //  //      ///
 | 
			
		||||
////      //     //////   ///////      //  //  //  //      //  //  //      ///
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
void InitScreen(void)
 | 
			
		||||
{
 | 
			
		||||
clrscr();
 | 
			
		||||
gotoxy(1,1);
 | 
			
		||||
/*
 | 
			
		||||
cprintf("Grafista:<3A><><EFBFBD><EFBFBD>JD<4A><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_____<5F><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\nProgramador:<3A>JD<4A><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>___________________/|||||/|_<><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Joshua<75><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>===<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|/#####|//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\nHardware:<3A><><EFBFBD><EFBFBD>Lopez<65><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Millan<61><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>_______<5F><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_______<5F><5F><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n<><6E><EFBFBD>      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>   /<2F>/_______/|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/_______/|<7C><>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>       <20> <20>   /<2F><>|<7C>_<EFBFBD>_<EFBFBD>_<EFBFBD>|/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|<7C>_<EFBFBD>_<EFBFBD>_<EFBFBD>|/<2F>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\nBienbenidos<6F>a<EFBFBD>una<6E><61><EFBFBD>/<2F><>________________ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\nnueva<76>era,        /<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD> <20><> /<2F><><EFBFBD><EFBFBD><EFBFBD>===<3D><>/<2F><>Pulsa<73>un<75>n<EFBFBD>mero<72>del<65>(0-7)");
 | 
			
		||||
cprintf("\r\n<>bienvenidos<6F>a<EFBFBD><61>/<2F><>/_<>_<EFBFBD>_<EFBFBD>_<EFBFBD>_<EFBFBD>_<EFBFBD>_<EFBFBD>_<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>===<3D><>/<2F><>para<72>activar/desactivar<61>la<6C>");
 | 
			
		||||
cprintf("\r\n       <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>____<5F><5F><EFBFBD><EFBFBD><EFBFBD>      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===<3D><>/<2F><>salida<64>correspondiente.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n<>InfoMundo<64><6F>/<2F><>/<2F>JD<4A>/|<7C><><EFBFBD>      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===<3D><>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n          /<2F><>/___<5F>/<2F>!<21><>      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===<3D><>/<2F><><EFBFBD>Las<61>led<65>indican<61>el<65>estado<64><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n      <20><>/<2F><><EFBFBD>|____|!<21><><EFBFBD>       <20><><EFBFBD><EFBFBD><EFBFBD>===<3D><>/<2F><><EFBFBD>de<64>las<61>entradas.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n      /<2F><><EFBFBD>________________<5F><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===<3D><>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n<><6E><EFBFBD><EFBFBD>/<2F><><EFBFBD>/________________/|<7C><><EFBFBD>===<3D><>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
cprintf("\r\n<><6E>/<2F><><EFBFBD><EFBFBD>|<7C>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>|/      /<2F><><EFBFBD><EFBFBD>Programa<6D>ejemplo<6C>en<65>modo<64>TEXTO.<2E>ver<65>1.1");
 | 
			
		||||
cprintf("\r\n/______<5F>\\<5C>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>/______/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>InfoMundo<64>1996<39>(c).<2E>_-<2D>FuTuRe<52>ViSiOn<4F>-_");
 | 
			
		||||
cprintf("\r\n         -------------                                                   <20><><EFBFBD><EFBFBD>");
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
textcolor(WHITE);cprintf("Grafista:<3A><><EFBFBD><EFBFBD>JD<4A><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(BLUE); cprintf("_____<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\nProgramador:<3A>JD<4A><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(YELLOW+BLINK); cprintf("<EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("___________________");textcolor(BLUE); cprintf("/|||||/|");textcolor(GREEN); cprintf("_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Joshua<75><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(BLUE); cprintf("|/#####|/");textcolor(GREEN); cprintf("/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\nHardware:<3A><><EFBFBD><EFBFBD>Lopez<65><7A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/");textcolor(MAGENTA); cprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n   <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Millan<61><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD>_______<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_______<EFBFBD><EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n<EFBFBD><EFBFBD><EFBFBD>      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>   ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD>/_______/|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/_______/|<7C>");textcolor(GREEN); cprintf("<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>       <20> <20>   ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD>|");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("|/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("|/");textcolor(GREEN); cprintf("<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\nBienbenidos<EFBFBD>a<EFBFBD>una<EFBFBD><EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD>________________ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\nnueva<EFBFBD>era,        ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD> <20><> /<2F><><EFBFBD>");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD>");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD>/<2F><>");textcolor(WHITE); cprintf("Pulsa<EFBFBD>un<EFBFBD>n<EFBFBD>mero<EFBFBD>del<EFBFBD>(0-7)");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n<EFBFBD>bienvenidos<EFBFBD>a<EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD>/_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("<EFBFBD>"); textcolor(DARKGRAY); cprintf("/<2F><><EFBFBD>");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD>");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD>/<2F><>");textcolor(WHITE); cprintf("para<EFBFBD>activar/desactivar<61>la<6C>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n       <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD>____<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD>");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD>/<2F><>");textcolor(WHITE); cprintf("salida<EFBFBD>correspondiente.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n<EFBFBD>InfoMundo<EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD>/<2F>JD<4A>/|<7C><><EFBFBD>      <20><><EFBFBD><EFBFBD><EFBFBD>");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD>");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n          ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD>/___<5F>/<2F>");textcolor(LIGHTGRAY); cprintf("!");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD>      <20><><EFBFBD><EFBFBD><EFBFBD>");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD>");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD>/<2F><><EFBFBD>");textcolor(WHITE); cprintf("Las<EFBFBD>led<EFBFBD>indican<EFBFBD>el<EFBFBD>estado<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n      <20><>");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD><EFBFBD>|____|");textcolor(LIGHTGRAY); cprintf("!");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD><EFBFBD>       <20><><EFBFBD>");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD>");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD>/<2F><><EFBFBD>");textcolor(WHITE); cprintf("de<EFBFBD>las<EFBFBD>entradas.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n      ");textcolor(GREEN); cprintf("/");textcolor(BLUE); cprintf("<EFBFBD><EFBFBD><EFBFBD>________________<EFBFBD>");textcolor(DARKGRAY); cprintf("<EFBFBD><EFBFBD><EFBFBD>");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD>");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("<EFBFBD>");textcolor(GREEN); cprintf("<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/");textcolor(BLUE); cprintf("<EFBFBD><EFBFBD><EFBFBD>/________________/|");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD><EFBFBD>");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("<EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n<EFBFBD><EFBFBD>");textcolor(GREEN); cprintf("/");textcolor(BLUE); cprintf("<EFBFBD><EFBFBD><EFBFBD>|<7C>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>|/      ");textcolor(GREEN); cprintf("/");textcolor(WHITE); cprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Programa<EFBFBD>ejemplo<EFBFBD>en<EFBFBD>modo<EFBFBD>TEXTO.<2E>ver<65>1.1");
 | 
			
		||||
textcolor(WHITE);cprintf("\r\n");textcolor(GREEN); cprintf("/_____<5F>");textcolor(BLUE); cprintf("\\<EFBFBD>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>.<2E>/");textcolor(GREEN); cprintf("______/");textcolor(WHITE); cprintf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>InfoMundo<EFBFBD>1996<EFBFBD>(c).<2E>_-<2D>FuTuRe<52>ViSiOn<4F>-_");
 | 
			
		||||
textcolor(BLUE); cprintf("\r\n         -------------                                                   <20><><EFBFBD><EFBFBD>");
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
void Melt( void )
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
int index,ticks=0;
 | 
			
		||||
 | 
			
		||||
for (index=1; index< 81; index++)
 | 
			
		||||
    {
 | 
			
		||||
        worms[index].speed   = 3 + rand()%9;
 | 
			
		||||
            worms[index].y       = 0;
 | 
			
		||||
                worms[index].counter = 0;
 | 
			
		||||
    gotoxy( index, 1 );
 | 
			
		||||
    cprintf(" ");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
while(++ticks<290)
 | 
			
		||||
     {
 | 
			
		||||
      delay(10);
 | 
			
		||||
 | 
			
		||||
     for (index=1; index<81; index++)
 | 
			
		||||
	 {
 | 
			
		||||
	 if (++worms[index].counter == worms[index].speed)
 | 
			
		||||
	    {
 | 
			
		||||
	    worms[index].counter = 0;
 | 
			
		||||
	    if (worms[index].y < 25)
 | 
			
		||||
	       {
 | 
			
		||||
                   gotoxy( index, worms[index].y );
 | 
			
		||||
                       cprintf("<EFBFBD>");
 | 
			
		||||
                           gotoxy( index, worms[index].y-1 );
 | 
			
		||||
                               cprintf(" ");
 | 
			
		||||
	       worms[index].y++;
 | 
			
		||||
	       } else {
 | 
			
		||||
		     gotoxy( index, 24 );
 | 
			
		||||
		     cprintf(" ");
 | 
			
		||||
               }
 | 
			
		||||
	    }
 | 
			
		||||
	 }
 | 
			
		||||
     if (!(ticks % 500))
 | 
			
		||||
	{
 | 
			
		||||
	for (index=1; index<81; index++)
 | 
			
		||||
	    worms[index].speed--;
 | 
			
		||||
	}
 | 
			
		||||
     }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								FONDO.TXT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								FONDO.TXT
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
Grafista:    JD					       _____
 | 
			
		||||
Programador: JD			<09><>___________________/|||||/|_
 | 
			
		||||
	     Joshua	      / <20><> <20>===<3D>            |/%%%%%|//
 | 
			
		||||
Hardware:    Lopez	    / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>	        <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>	   /
 | 
			
		||||
	     Millan	  / _______          _______     /
 | 
			
		||||
			/ /_______/|       /_______/|  /
 | 
			
		||||
		      /  |<7C>_<EFBFBD>_<EFBFBD>_<EFBFBD>|/       |<7C>_<EFBFBD>_<EFBFBD>_<EFBFBD>|/ /
 | 
			
		||||
Bienbenidos a una   /  ________________   <20>        /
 | 
			
		||||
nueva era,	  /  <20> <20> <20> <20> <20> <20> <20> <20>  / <20> <20><>===<3D> /  Pulsa un n<>mero del ( 0-7 )
 | 
			
		||||
 bienvenidos a	/  /_<>_<EFBFBD>_<EFBFBD>_<EFBFBD>_<EFBFBD>_<EFBFBD>_<EFBFBD>_<EFBFBD>/ <20> <20><>===<3D> /  para activar/desactivar la
 | 
			
		||||
	      /  ____       /| /|   <20> <20><>===<3D> /  salida correspondiente.
 | 
			
		||||
 InfoMundo  /  / JD /|    /| /|   <20> <20><>===<3D> /
 | 
			
		||||
	  /  /___ / !   /| /|   <20> <20><>===<3D> /   Las led indican el estado
 | 
			
		||||
	/   |____|!    |  |   <20> <20><>===<3D> /   de las entradas.
 | 
			
		||||
      /   ________________  <20> <20><>===<3D> /
 | 
			
		||||
    /   /________________/| <20><>===<3D> /
 | 
			
		||||
  /    | . . . . . . . . |/      /    Programa ejemplo en modo TEXTO. ver 1.1
 | 
			
		||||
/______ \ . . . . . . . /______/      InfoMundo 1996 (c). _-<2D>FuTuRe ViSiOn<4F>-_
 | 
			
		||||
	 -------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
							
								
								
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
#PRN_DEMO 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
*20/04/1996* 
 | 
			
		||||
 
 | 
			
		||||
ToDo: wwtcf? 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										384
									
								
								SOFT_DOC.TXT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										384
									
								
								SOFT_DOC.TXT
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,384 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                             8i8o Documentaci<63>n
 | 
			
		||||
                                 del Software
 | 
			
		||||
 | 
			
		||||
                                   Indice
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  1    <20> Que software incluye el kit ?
 | 
			
		||||
  2    Descripci<63>n de comandos.
 | 
			
		||||
  3    Primeros pasos.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  4    Creaci<63>n de un programa ejemplo DEMO.C
 | 
			
		||||
 | 
			
		||||
  5    Preguntas y Respuestas.
 | 
			
		||||
  6    Puntos de consulta directa.
 | 
			
		||||
      
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      NOTA:
 | 
			
		||||
                Todas las referencias que se hagan aqui a la programaci<63>n
 | 
			
		||||
                seran basadas en el lenguaje C, ya que para otros lenguajes
 | 
			
		||||
                las librerias a utilizar seran las mismas, asi como los
 | 
			
		||||
                nombre y operaciones internas de las funciones.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
                      <20> Que software incluye el kit ?
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        Disco 1: [CONTENIDO]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                soft_doc.txt      Documentaci<63>n del software ( texto MS-DOS ).
 | 
			
		||||
                hard_doc.txt      Documentaci<63>n del hardware ( texto MS-DOS ).
 | 
			
		||||
                softhard.hlp      D. Software y Hardware  ( Formato WinHELP ).
 | 
			
		||||
 | 
			
		||||
                InfoMund.gif      Imagen del logotipo de InfoMundo
 | 
			
		||||
                8i8o_pb .gif      Imagen del circuito prototipo 8i8o_pb
 | 
			
		||||
                conexion.txt      Ideas de conexiones frecuentes.
 | 
			
		||||
                catalogo.txt      Lista de productos ofrecidos por InfoMundo.
 | 
			
		||||
 | 
			
		||||
         lib_tc\prn_cnt?.lib      Librerias en C, para Tiny, Medium, Compact, Large y Huge   .
 | 
			
		||||
                prn_cnt .h        Cabeceras para las librerias.
 | 
			
		||||
                demo    .c        Demo completo de una utilizaci<63>n global.
 | 
			
		||||
                demo    .exe      Programa demo.c compilado
 | 
			
		||||
                kit     .c        Programa ejemplo.
 | 
			
		||||
 | 
			
		||||
         lib_cp\prn_cnt .lib      Librerias para Clipper.
 | 
			
		||||
                prn_cnt .h        Cabeceras de las librerias.
 | 
			
		||||
                io      .prj      Fuente en clipper ( para escribir y leer ).
 | 
			
		||||
 | 
			
		||||
         lib_vb\prn_cnt .vbx      Librerias en Visual Basic ( ver 3.0 >> ).
 | 
			
		||||
                puertos .dll      .DLL para el control de los puertos en VB.
 | 
			
		||||
                control .bas      Demostraci<63>n de las librerias para VB.
 | 
			
		||||
 | 
			
		||||
       infomund\infomund.hlp      Archivo en formato winHELP, que habla de IM
 | 
			
		||||
                
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
                            Descripci<63>n de comandos.
 | 
			
		||||
 | 
			
		||||
<EFBFBD>> Init_all                     <20>> Register       
 | 
			
		||||
<EFBFBD>> Reset_all      
 | 
			
		||||
<EFBFBD>> Lee_Salidas                  <20>> Lee_Salida     
 | 
			
		||||
<EFBFBD>> Escribe_Salidas              <20>> Escribe_Salida 
 | 
			
		||||
<EFBFBD>> Lee_Entradas                 <20>> Lee_Entrada    
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Esta rutina debe ser llamada al iniciar el programa que use las librerias. |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Es la encargada de poner a cero todas la salidas, al principio y al salir. |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:   ( ninguno )                                       |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                          OK                     Todo ha ido bien.          |
 | 
			
		||||
|                          ERROR_EN_ATEXIT        Error registrando funci<63>n  |
 | 
			
		||||
|                          FUNCION_YA_REGISTRADA  No es la 1<> vez            |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
<EFBFBD>> int Init_all(void);
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| WARNING:                                                                   |
 | 
			
		||||
|          El uso de la siguiente funci<63>n esta indicada solo para usuarios   |
 | 
			
		||||
|          experimentados, se debe usar en lugar de la funci<63>n anterior.     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ( LEER/ESCRIBIR )      // L/E los registros del fich|
 | 
			
		||||
|                        ( %s )                 // _ero %s                   |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        1    Ok!                         OK                 |
 | 
			
		||||
|                       -1    Fallo desconocido           FALLO_DESCONOCIDO  |
 | 
			
		||||
|                       -2    Archivo no existe           NO_ARCHIVO         |
 | 
			
		||||
|                       -3    Error archivo no valido     ARCHIVO_INCORRECTO |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
                       
 | 
			
		||||
<EFBFBD>> int Register( char leer_escribir, char *file );
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Resetea todas las salidas y las pone a cero.                              |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
<EFBFBD>> void Reset_all(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Obtiene el estado de las salidas ( On/Off ), de la ampliacion AMPL.       |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, solo se devolvera el char de salida.            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
<EFBFBD>> unsigned char Lee_Salidas( char ampl, ESTADOS *estados );
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Obtiene el estado de una salida  ( On/Off ), cualquiera.                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        salida     ( Si  1 ampl.  0 a  7 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
<EFBFBD>> unsigned char Lee_Salida( char salida );
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Escribe la variable 'estados' ( On/Off ), en la ampliacion AMPL.          |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                        estadosb   Byte con los estados                     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, se utilizar<61> el char con los estados.           |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
<EFBFBD>> unsigned char Escribe_Salidas( char ampl, ESTADOS *estados, char estadosb );
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        salida     ( Si  1 ampl.  0 a  3 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                        estado     ( ON / OFF )                             |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
<EFBFBD>> unsigned char Escribe_Salida( char salida, char estado );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Lee las entradas y la almacena en la variable estados.                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        ampl       Ampliaci<63>n donde debemos mirar           |
 | 
			
		||||
|                        estados    Puntero a estructura con los estados     |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con los estados                    |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| NOTA: si &estados es NULL, solo se devolvera el char de salida.            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
<EFBFBD>> unsigned char Lee_Entradas( char ampl, ESTADOS *estados );
 | 
			
		||||
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|                                                                            |
 | 
			
		||||
|  Lee una entrada cualquiera.                                               |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Entrada:                                                     |
 | 
			
		||||
|                        entrada    ( Si  1 ampl.  0 a  7 )                  |
 | 
			
		||||
|                                   ( Si 10 ampl.  0 a 80 )                  |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
| Parametros de Salida:                                                      |
 | 
			
		||||
|                        char       1Byte con el estado                      |
 | 
			
		||||
|                                                                            |
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
<EFBFBD>> unsigned char Lee_Entrada( char entrada );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
                                Primeros pasos.
 | 
			
		||||
 | 
			
		||||
        En esta secci<63>n describiremos los principios b<>sicos para utilizar
 | 
			
		||||
        nuestro Software.
 | 
			
		||||
 | 
			
		||||
        Junto con el programa tenemos que crear un proyecto en el que se
 | 
			
		||||
        incluyan nuestro programa y la libreria correspondiente al modelo
 | 
			
		||||
        de memoria que estemos utilizando.
 | 
			
		||||
 | 
			
		||||
        En primer lugar antes de empezar a realizar operaciones con el 8i8o
 | 
			
		||||
        deberemos indicar en que puerto se encuentra, cargando la variable
 | 
			
		||||
 | 
			
		||||
         <20>>  Lpt_usado = [1:Ltp1, 2:Lpt2, 3:Lpt3]
 | 
			
		||||
 | 
			
		||||
        acto seguido debemos resetear todas las salidas:
 | 
			
		||||
 | 
			
		||||
         <20>>  #include "prn_cnt"
 | 
			
		||||
 | 
			
		||||
         <20>>  void main( void )
 | 
			
		||||
         <20>>  {
 | 
			
		||||
         <20>>       Lpt_usado = 1;
 | 
			
		||||
         <20>>       reset_all();
 | 
			
		||||
         <20>>  }
 | 
			
		||||
 | 
			
		||||
        la funcion reset_all, puede ser sustituida por 'Register', esta
 | 
			
		||||
        ultima esta indicada cuando se ha salido voluntariamente de su
 | 
			
		||||
        programa y quiere guardar en un archivo el estado de las salidas,
 | 
			
		||||
        de modo que al volver a entrar todo siga igual, sin ninguna
 | 
			
		||||
        alteraci<63>n. ( Para que al salir del programa no se reseteen las
 | 
			
		||||
        salidas, basta con no llamar a la funcion reset_all ).
 | 
			
		||||
 | 
			
		||||
        para escribir en el '8i8o' podemos utilizar una de las dos
 | 
			
		||||
        funciones disponibles:
 | 
			
		||||
        
 | 
			
		||||
                        'Escribe_Salida' o 'Escribe_Salidas' la diferencia
 | 
			
		||||
        reside en que a la primera le indicamos la salida f<>sica y el
 | 
			
		||||
        estado ON, OFF. La segunda sirve para poner en el estado que deseemos
 | 
			
		||||
        la ampliaci<63>n, es decir, seleccionar el estado de los 8 bit's de golpe. 
 | 
			
		||||
 | 
			
		||||
         <20>>  #include <stdio.h>
 | 
			
		||||
         <20>>  #include "prn_cnt"
 | 
			
		||||
 | 
			
		||||
         <20>>  void main( void )
 | 
			
		||||
         <20>>  {
 | 
			
		||||
         <20>>   int salida, estado;
 | 
			
		||||
         <20>>       Lpt_usado = 1;
 | 
			
		||||
         <20>>       reset_all();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
         <20>>   do{
 | 
			
		||||
         <20>>       printf( "\n Introduzca Salida y Estado [1:ON, 0:OFF] " );
 | 
			
		||||
         <20>>       printf( "\n estado > 1 Termina el Programa.          " );
 | 
			
		||||
         <20>>       scanf ( "%d %d", &salida, &estado );
 | 
			
		||||
         <20>>       Escribe_Salida( salida, estado );
 | 
			
		||||
         <20>>   }while( estado<=1 );
 | 
			
		||||
 | 
			
		||||
         <20>>  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        las funciones destinadas a la lectura se usan de igual forma que
 | 
			
		||||
        las anteriores para la escritura, existiendo igualmente dos funciones
 | 
			
		||||
        para leer una salida determinada o leer una ampliaci<63>n de golpe,
 | 
			
		||||
        se<73>alar que las entras al '8i8o' pueden funcionar directamente como
 | 
			
		||||
        buses de datos digitales y no solo anal<61>gicos.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
         <20>>  #include <conio.h>
 | 
			
		||||
         <20>>  #include "prn_cnt"
 | 
			
		||||
 | 
			
		||||
         <20>>  void main( void )
 | 
			
		||||
         <20>>  {
 | 
			
		||||
         <20>>   unsigned char estados;
 | 
			
		||||
         <20>>       Lpt_usado = 1;
 | 
			
		||||
         <20>>       reset_all();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
         <20>>   cprintf( "\n Pulse una tecla para acabar " );
 | 
			
		||||
         <20>>   cprintf( "\n 1 entrada de datos ON       " );
 | 
			
		||||
         <20>>   cprintf( "\n 0 entrada de datos OFF      " );
 | 
			
		||||
         <20>>   do{
 | 
			
		||||
         <20>>       gotoxy( 10, 15 );
 | 
			
		||||
         <20>>       estados = Lee_Salidas( 1, NULL );
 | 
			
		||||
                  printf( "\n%d %d %d %d %d %d %d %d", ( estado & 0x80 ) != 0,
 | 
			
		||||
                                                       ( estado & 0x40 ) != 0,
 | 
			
		||||
                                                       ( estado & 0x20 ) != 0,
 | 
			
		||||
                                                       ( estado & 0x10 ) != 0,
 | 
			
		||||
                       
 | 
			
		||||
                                                       ( estado & 0x08 ) != 0,
 | 
			
		||||
                                                       ( estado & 0x04 ) != 0,
 | 
			
		||||
                                                       ( estado & 0x02 ) != 0,
 | 
			
		||||
                                                       ( estado & 0x01 ) != 0 );
 | 
			
		||||
 | 
			
		||||
         <20>>   }while( !kbhit() );
 | 
			
		||||
 | 
			
		||||
         <20>>  }
 | 
			
		||||
 | 
			
		||||
        Como puedes ver, la programaci<63>n de nuestro dispositivo es tan
 | 
			
		||||
        sencilla como decir donde y que queremos hacer. El limite esta
 | 
			
		||||
        en tu imaginaci<63>n y conocimientos.
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
                        Creaci<63>n de un programa ejemplo DEMO.C
 | 
			
		||||
 | 
			
		||||
Vea fichero DEMO.C
 | 
			
		||||
 | 
			
		||||
Puntos importantes:
 | 
			
		||||
 | 
			
		||||
                      -Realiza una lectura continua del bus de entrada
 | 
			
		||||
                      -Controla la 1<> ampliaci<63>n del 8i8o
 | 
			
		||||
                      -Al entrar comprueba que no se hubiera entrado
 | 
			
		||||
                       antes, recordando el estado de las salidas, register,
 | 
			
		||||
                       si al salir, todas las salidas estan a cero, se
 | 
			
		||||
                       elimina el archivo register, para que al volver a
 | 
			
		||||
                       entrar se reseteen las salidas.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
                              Preguntas y Respuestas
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 Bien, de momento ninguno de nuestros clientes nos han planteado ninguna
 | 
			
		||||
 respuesta, y esperamos que siga siendo asi, ya que eso es se<73>al de la
 | 
			
		||||
 buena documentaci<63>n incluida y el sencillo manejo del '8i8o'.
 | 
			
		||||
 | 
			
		||||
 De todas formas si tiene alguna pregunta, no dude en realizarnosla.
 | 
			
		||||
 Aprovecho para realizar unas cuantas:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 <20> Que complementos tengo para mi '8i8o' ?
 | 
			
		||||
 | 
			
		||||
 Para saber que complementos, puede adquirir para su '8i8o' solo tiene
 | 
			
		||||
 que editar el fichero CATALOGO.TXT.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 <20> Quien es la asociaci<63>n InfoMundo ?
 | 
			
		||||
 | 
			
		||||
 Abre el fichero infomund.hlp, y enterate de quienes somos, que hacemos,
 | 
			
		||||
 y por que no, unete a nosotros, colaborando en proyectos y debates.
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
                            Puntos de consulta directa.
 | 
			
		||||
 | 
			
		||||
  Puedes dirigirte a nosotros via e-mail:
 | 
			
		||||
 | 
			
		||||
                                        infomundo@arrakis.es
 | 
			
		||||
                                        guill@galileo.fie.us.es
 | 
			
		||||
 | 
			
		||||
                              por tel<65>fono:
 | 
			
		||||
 | 
			
		||||
        a los propios Creadores del 8i8o :
 | 
			
		||||
 | 
			
		||||
        Francisco Lopez         [hardware] -------> 568 xx xx 
 | 
			
		||||
        Francisco Millan        [hardware] -------> 568 xx xx 
 | 
			
		||||
        Jos<6F> David Guill<6C>n      [software] -------> 561 xx xx 
 | 
			
		||||
        Josue                   [software] -------> 568 xx xx
 | 
			
		||||
 | 
			
		||||
                              a nuestra BBS:
 | 
			
		||||
 | 
			
		||||
                                8 nodos :           xX XXx xX
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
                                F       I       N
 | 
			
		||||
-------------------------------------------------------------------------------
 | 
			
		||||
eof file.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										69
									
								
								VIDEOC~1.TXT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								VIDEOC~1.TXT
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,69 @@
 | 
			
		||||
/*
 | 
			
		||||
Bit 5 --> Indica con 0 que empieza un sincronismo de pantalla
 | 
			
		||||
Bit 6 --> Indica que empieza una linea ( cuando esta a 0 )
 | 
			
		||||
Bit 4 --> Indica si es par o impar (0-1)
 | 
			
		||||
 | 
			
		||||
Bit 0 }-> Commutador  
 | 
			
		||||
Bit 1 }->           Video
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  USO: video [LINEA_INICIO] [LINEA_FIN] [TIEMPO_RETARDO_MICRO_SEG]
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
 | 
			
		||||
void main( int argc, char *argv[] )
 | 
			
		||||
{
 | 
			
		||||
 int LineaINI, LineaFIN;
 | 
			
		||||
 char LineaPI;
 | 
			
		||||
 double RETARDO;
 | 
			
		||||
 
 | 
			
		||||
 if ( argc < 4 )  
 | 
			
		||||
 {
 | 
			
		||||
  sprintf( "\nERROR de parametros: video [LINEA_INICIO] [LINEA_FIN] [TIEMPO_RETARDO_MICRO_SEG]\n");
 | 
			
		||||
  return;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 LineaINI = atoi( argv[1] );
 | 
			
		||||
 LineaFIN = atoi( argv[2] );
 | 
			
		||||
 Retardo  = atod( argv[3] );
 | 
			
		||||
 | 
			
		||||
 do {
 | 
			
		||||
 | 
			
		||||
 // Esperamos a que empieze un sincronismo de pantalla
 | 
			
		||||
 while( inportb(888) & 32 );
 | 
			
		||||
 | 
			
		||||
 // Mira si son lineas pares o impares e inicializa el contador de n<> de l<>nea
 | 
			
		||||
 if ( inportb(888) & 16 ) 
 | 
			
		||||
  LineaPI = 1;
 | 
			
		||||
 else
 | 
			
		||||
  LineaPI = 0;
 | 
			
		||||
 | 
			
		||||
 while( linea < 313 )
 | 
			
		||||
 {
 | 
			
		||||
   if ( !(inport( 888 ) & 64) ) 
 | 
			
		||||
   {
 | 
			
		||||
    linea += 2;
 | 
			
		||||
    if ( LineaINI <= linea && linea <= LineaFIN )
 | 
			
		||||
    {
 | 
			
		||||
     outportb( 888, F2 );
 | 
			
		||||
 | 
			
		||||
     // Perdemos "Retardo" micro-segundos
 | 
			
		||||
     while( (clock() - SegINI)<<3 < Retardo );  
 | 
			
		||||
 | 
			
		||||
     outportb( 888, F1 ); 
 | 
			
		||||
    }
 | 
			
		||||
   }
 | 
			
		||||
 }; 
 | 
			
		||||
 | 
			
		||||
 } while ( !kbhit() );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 while( kbhit() ) getch();  
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user