First commit 20/04/1996
This commit is contained in:
commit
8c5bf38666
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("Ü ");
|
||||
}
|
||||
}
|
||||
|
||||
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("Ü");
|
||||
} else {
|
||||
textcolor( LIGHTRED );
|
||||
cprintf("Ü");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//// //////////////////////////////////////////////////////////////////
|
||||
//// ////////////////////////////////////////////////////////////////////////
|
||||
//// ////// // // // // // // // //// /////////
|
||||
//// //// // // // // ////// // /// // // // // / ////////
|
||||
//// ////// // // // // ////// // /// // // // ///////// ////////
|
||||
//// ////// // // // // // // // // // /////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////// ///////////// //////////////// ////// // ///////////
|
||||
//////// ///////////// /// ////////////////// ////////// // ///////////
|
||||
//////// // ////// /// // // // // // // // ///
|
||||
//// // ////// //////// // // // ////// // // /////// ///
|
||||
//// // // ///////// /////// // // // // // // // ///
|
||||
//// // ////// /////// // // // // // // // ///
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
void InitScreen(void)
|
||||
{
|
||||
clrscr();
|
||||
gotoxy(1,1);
|
||||
/*
|
||||
cprintf("Grafista:ÿÿÿÿJDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_____ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\nProgramador:ÿJDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛ___________________/|||||/|_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\n ÿÿÿÿÿÿÿÿÿÿJoshuaÿÿÿÿÿÿÿÿÿÿÿ/ÿÁÁÿÚ===¿ÿÿÿÿÿÿÿÿÿÿÿÿ|/#####|//ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\nHardware:ÿÿÿÿLopezÿÿÿÿÿÿÿÿÿÿ/ÿÂÂÂÂÂÂÂÿÿÿÿÿÿÿÿÿÿÿÂÂÂÂÂÂÂÿÿÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\n ÿÿÿÿÿÿÿÿÿÿMillanÿÿÿÿÿÿÿ/ÿ_______ÿÿÿÿÿÿÿÿÿÿ_______ÿÿÿÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\nÿÿÿ ÿÿÿÿÿÿÿ ÿ ÿÿ /ÿ/_______/|ÿÿÿÿÿÿÿ/_______/|ÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\nÿÿÿÿÿÿÿÿÿ ÿ ÿ /ÿÿ|Â_Â_Â_Â|/ÿÿÿÿÿÿÿ|Â_Â_Â_Â|/ÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\nBienbenidosÿaÿunaÿÿÿ/ÿÿ________________ ÿÿÜÿÿÿÿÿÿÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\nnuevaÿera, /ÿÿÜÿÜ ÜÿÜ Ü ÜÿÜ Üÿ /ÿÜÿÁÚ===¿ÿ/ÿÿPulsaÿunÿn£meroÿdelÿ(0-7)");
|
||||
cprintf("\r\nÿbienvenidosÿaÿÿ/ÿÿ/_Á_Á_Á_Á_Á_Á_Á_Á/ÿÜÿÁÚ===¿ÿ/ÿÿparaÿactivar/desactivarÿlaÿ");
|
||||
cprintf("\r\n ÿÿÿÿÿÿÿ/ÿÿ____ÿÿÿÿÿ ÿÿÿÿÜÿÁÚ===¿ÿ/ÿÿsalidaÿcorrespondiente.ÿÿÿÿÿÿ");
|
||||
cprintf("\r\nÿInfoMundoÿÿ/ÿÿ/ÿJDÿ/|ÿÿÿ ÿÿÿÜÿÁÚ===¿ÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\n /ÿÿ/___ÿ/ÿ!ÿÿ ÿÿÿÜÿÁÚ===¿ÿ/ÿÿÿLasÿledÿindicanÿelÿestadoÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\n ÿÿ/ÿÿÿ|____|!ÿÿÿ ÿÜÿÁÚ===¿ÿ/ÿÿÿdeÿlasÿentradas.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\n /ÿÿÿ________________ÿÿÜÿÁÚ===¿ÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\nÿÿÿÿ/ÿÿÿ/________________/|ÿÁÚ===¿ÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
cprintf("\r\nÿÿ/ÿÿÿÿ|ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ|/ /ÿÿÿÿProgramaÿejemploÿenÿmodoÿTEXTO.ÿverÿ1.1");
|
||||
cprintf("\r\n/______ÿ\\ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ/______/ÿÿÿÿÿÿInfoMundoÿ1996ÿ(c).ÿ_-ùFuTuReÿViSiOnù-_");
|
||||
cprintf("\r\n ------------- ÿÿÿÿ");
|
||||
*/
|
||||
|
||||
|
||||
textcolor(WHITE);cprintf("Grafista:ÿÿÿÿJDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");textcolor(BLUE); cprintf("_____ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\nProgramador:ÿJDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");textcolor(YELLOW+BLINK); cprintf("ÛÛ");textcolor(GREEN); cprintf("___________________");textcolor(BLUE); cprintf("/|||||/|");textcolor(GREEN); cprintf("_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\n ÿÿÿÿÿÿÿÿÿÿJoshuaÿÿÿÿÿÿÿÿÿÿÿ");textcolor(GREEN); cprintf("/");textcolor(LIGHTGRAY); cprintf("ÿÁÁÿÚ");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("¿ÿÿÿÿÿÿÿÿÿÿÿÿ");textcolor(BLUE); cprintf("|/#####|/");textcolor(GREEN); cprintf("/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\nHardware:ÿÿÿÿLopezÿÿÿÿÿÿÿÿÿÿ");textcolor(GREEN); cprintf("/");textcolor(MAGENTA); cprintf("ÿÂÂÂÂÂÂÂÿÿÿÿÿÿÿÿÿÿÿÂÂÂÂÂÂÂÿ");textcolor(GREEN); cprintf("ÿÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\n ÿÿÿÿÿÿÿÿÿÿMillanÿÿÿÿÿÿÿ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿ_______ÿÿÿÿÿÿÿÿÿÿ_______ÿÿÿ");textcolor(GREEN); cprintf("ÿÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\nÿÿÿ ÿÿÿÿÿÿÿ ÿ ÿÿ ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿ/_______/|ÿÿÿÿÿÿÿ/_______/|ÿ");textcolor(GREEN); cprintf("ÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\nÿÿÿÿÿÿÿÿÿ ÿ ÿ ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿÿ|");textcolor(LIGHTGRAY); cprintf("Â");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Â");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Â");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Â");textcolor(DARKGRAY); cprintf("|/ÿÿÿÿÿÿÿ|");textcolor(LIGHTGRAY); cprintf("Â");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Â");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Â");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Â");textcolor(DARKGRAY); cprintf("|/");textcolor(GREEN); cprintf("ÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\nBienbenidosÿaÿunaÿÿÿ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿÿ________________ ÿÿÜÿÿÿÿÿÿÿ");textcolor(GREEN); cprintf("ÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\nnuevaÿera, ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿÿÜÿÜ ÜÿÜ Ü ÜÿÜ Üÿ /ÿÜÿ");textcolor(LIGHTGRAY); cprintf("ÁÚ");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("¿");textcolor(GREEN); cprintf("ÿ/ÿÿ");textcolor(WHITE); cprintf("Pulsaÿunÿn£meroÿdelÿ(0-7)");
|
||||
textcolor(WHITE);cprintf("\r\nÿbienvenidosÿaÿÿ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿÿ/_");textcolor(LIGHTGRAY); cprintf("Á");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Á");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Á");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Á");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Á");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Á");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Á");textcolor(DARKGRAY); cprintf("_");textcolor(LIGHTGRAY); cprintf("Á"); textcolor(DARKGRAY); cprintf("/ÿÜÿ");textcolor(LIGHTGRAY); cprintf("ÁÚ");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("¿");textcolor(GREEN); cprintf("ÿ/ÿÿ");textcolor(WHITE); cprintf("paraÿactivar/desactivarÿlaÿ");
|
||||
textcolor(WHITE);cprintf("\r\n ÿÿÿÿÿÿÿ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿÿ____ÿÿÿÿÿ ÿÿÿÿÜÿ");textcolor(LIGHTGRAY); cprintf("ÁÚ");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("¿");textcolor(GREEN); cprintf("ÿ/ÿÿ");textcolor(WHITE); cprintf("salidaÿcorrespondiente.ÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\nÿInfoMundoÿÿ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿÿ/ÿJDÿ/|ÿÿÿ ÿÿÿÜÿ");textcolor(LIGHTGRAY); cprintf("ÁÚ");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("¿");textcolor(GREEN); cprintf("ÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\n ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿÿ/___ÿ/ÿ");textcolor(LIGHTGRAY); cprintf("!");textcolor(DARKGRAY); cprintf("ÿÿ ÿÿÿÜÿ");textcolor(LIGHTGRAY); cprintf("ÁÚ");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("¿");textcolor(GREEN); cprintf("ÿ/ÿÿÿ");textcolor(WHITE); cprintf("Lasÿledÿindicanÿelÿestadoÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\n ÿÿ");textcolor(GREEN); cprintf("/");textcolor(DARKGRAY); cprintf("ÿÿÿ|____|");textcolor(LIGHTGRAY); cprintf("!");textcolor(DARKGRAY); cprintf("ÿÿÿ ÿÜÿ");textcolor(LIGHTGRAY); cprintf("ÁÚ");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("¿");textcolor(GREEN); cprintf("ÿ/ÿÿÿ");textcolor(WHITE); cprintf("deÿlasÿentradas.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\n ");textcolor(GREEN); cprintf("/");textcolor(BLUE); cprintf("ÿÿÿ________________ÿ");textcolor(DARKGRAY); cprintf("ÿÜÿ");textcolor(LIGHTGRAY); cprintf("ÁÚ");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("¿");textcolor(GREEN); cprintf("ÿ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\nÿÿÿÿ");textcolor(GREEN); cprintf("/");textcolor(BLUE); cprintf("ÿÿÿ/________________/|");textcolor(LIGHTGRAY); cprintf("ÿÁÚ");textcolor(CYAN); cprintf("===");textcolor(LIGHTGRAY); cprintf("¿ÿ");textcolor(GREEN); cprintf("/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ");
|
||||
textcolor(WHITE);cprintf("\r\nÿÿ");textcolor(GREEN); cprintf("/");textcolor(BLUE); cprintf("ÿÿÿ|ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ|/ ");textcolor(GREEN); cprintf("/");textcolor(WHITE); cprintf("ÿÿÿÿProgramaÿejemploÿenÿmodoÿTEXTO.ÿverÿ1.1");
|
||||
textcolor(WHITE);cprintf("\r\n");textcolor(GREEN); cprintf("/_____ÿ");textcolor(BLUE); cprintf("\\ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ.ÿ/");textcolor(GREEN); cprintf("______/");textcolor(WHITE); cprintf("ÿÿÿÿÿÿInfoMundoÿ1996ÿ(c).ÿ_-ùFuTuReÿViSiOnù-_");
|
||||
textcolor(BLUE); cprintf("\r\n ------------- ÿÿÿÿ");
|
||||
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
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("þ");
|
||||
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 ÛÛ___________________/|||||/|_
|
||||
Joshua / ÁÁ Ú===¿ |/%%%%%|//
|
||||
Hardware: Lopez / ÂÂÂÂÂÂÂ ÂÂÂÂÂÂÂ /
|
||||
Millan / _______ _______ /
|
||||
/ /_______/| /_______/| /
|
||||
/ |Â_Â_Â_Â|/ |Â_Â_Â_Â|/ /
|
||||
Bienbenidos a una / ________________ Ü /
|
||||
nueva era, / Ü Ü Ü Ü Ü Ü Ü Ü / Ü ÁÚ===¿ / Pulsa un n£mero del ( 0-7 )
|
||||
bienvenidos a / /_Á_Á_Á_Á_Á_Á_Á_Á/ Ü ÁÚ===¿ / para activar/desactivar la
|
||||
/ ____ /| /| Ü ÁÚ===¿ / salida correspondiente.
|
||||
InfoMundo / / JD /| /| /| Ü ÁÚ===¿ /
|
||||
/ /___ / ! /| /| Ü ÁÚ===¿ / Las led indican el estado
|
||||
/ |____|! | | Ü ÁÚ===¿ / de las entradas.
|
||||
/ ________________ Ü ÁÚ===¿ /
|
||||
/ /________________/| ÁÚ===¿ /
|
||||
/ | . . . . . . . . |/ / Programa ejemplo en modo TEXTO. ver 1.1
|
||||
/______ \ . . . . . . . /______/ InfoMundo 1996 (c). _-ùFuTuRe ViSiOnù-_
|
||||
-------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
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¢n
|
||||
del Software
|
||||
|
||||
Indice
|
||||
|
||||
|
||||
1 ¨ Que software incluye el kit ?
|
||||
2 Descripci¢n de comandos.
|
||||
3 Primeros pasos.
|
||||
|
||||
|
||||
4 Creaci¢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¢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.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
¨ Que software incluye el kit ?
|
||||
|
||||
|
||||
Disco 1: [CONTENIDO]
|
||||
|
||||
|
||||
soft_doc.txt Documentaci¢n del software ( texto MS-DOS ).
|
||||
hard_doc.txt Documentaci¢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¢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¢n de las librerias para VB.
|
||||
|
||||
infomund\infomund.hlp Archivo en formato winHELP, que habla de IM
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Descripci¢n de comandos.
|
||||
|
||||
Û> Init_all Û> Register
|
||||
Û> Reset_all
|
||||
Û> Lee_Salidas Û> Lee_Salida
|
||||
Û> Escribe_Salidas Û> Escribe_Salida
|
||||
Û> Lee_Entradas Û> 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¢n |
|
||||
| FUNCION_YA_REGISTRADA No es la 1¦ vez |
|
||||
| |
|
||||
\**************************************************************************/
|
||||
|
||||
Û> int Init_all(void);
|
||||
|
||||
/**************************************************************************\
|
||||
| |
|
||||
| WARNING: |
|
||||
| El uso de la siguiente funci¢n esta indicada solo para usuarios |
|
||||
| experimentados, se debe usar en lugar de la funci¢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 |
|
||||
| |
|
||||
\**************************************************************************/
|
||||
|
||||
Û> int Register( char leer_escribir, char *file );
|
||||
|
||||
/**************************************************************************\
|
||||
| |
|
||||
| Resetea todas las salidas y las pone a cero. |
|
||||
| |
|
||||
\**************************************************************************/
|
||||
|
||||
Û> void Reset_all(void);
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
| |
|
||||
| Obtiene el estado de las salidas ( On/Off ), de la ampliacion AMPL. |
|
||||
| |
|
||||
| Parametros de Entrada: |
|
||||
| ampl Ampliaci¢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. |
|
||||
\**************************************************************************/
|
||||
|
||||
Û> 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 |
|
||||
| |
|
||||
\**************************************************************************/
|
||||
|
||||
Û> unsigned char Lee_Salida( char salida );
|
||||
|
||||
/**************************************************************************\
|
||||
| |
|
||||
| Escribe la variable 'estados' ( On/Off ), en la ampliacion AMPL. |
|
||||
| |
|
||||
| Parametros de Entrada: |
|
||||
| ampl Ampliaci¢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 el char con los estados. |
|
||||
\**************************************************************************/
|
||||
|
||||
Û> 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 |
|
||||
| |
|
||||
\**************************************************************************/
|
||||
|
||||
Û> unsigned char Escribe_Salida( char salida, char estado );
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
| |
|
||||
| Lee las entradas y la almacena en la variable estados. |
|
||||
| |
|
||||
| Parametros de Entrada: |
|
||||
| ampl Ampliaci¢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. |
|
||||
\**************************************************************************/
|
||||
|
||||
Û> 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 |
|
||||
| |
|
||||
\**************************************************************************/
|
||||
|
||||
Û> unsigned char Lee_Entrada( char entrada );
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Primeros pasos.
|
||||
|
||||
En esta secci¢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
|
||||
|
||||
Û> Lpt_usado = [1:Ltp1, 2:Lpt2, 3:Lpt3]
|
||||
|
||||
acto seguido debemos resetear todas las salidas:
|
||||
|
||||
Û> #include "prn_cnt"
|
||||
|
||||
Û> void main( void )
|
||||
Û> {
|
||||
Û> Lpt_usado = 1;
|
||||
Û> reset_all();
|
||||
Û> }
|
||||
|
||||
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¢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¢n, es decir, seleccionar el estado de los 8 bit's de golpe.
|
||||
|
||||
Û> #include <stdio.h>
|
||||
Û> #include "prn_cnt"
|
||||
|
||||
Û> void main( void )
|
||||
Û> {
|
||||
Û> int salida, estado;
|
||||
Û> Lpt_usado = 1;
|
||||
Û> reset_all();
|
||||
|
||||
|
||||
Û> do{
|
||||
Û> printf( "\n Introduzca Salida y Estado [1:ON, 0:OFF] " );
|
||||
Û> printf( "\n estado > 1 Termina el Programa. " );
|
||||
Û> scanf ( "%d %d", &salida, &estado );
|
||||
Û> Escribe_Salida( salida, estado );
|
||||
Û> }while( estado<=1 );
|
||||
|
||||
Û> }
|
||||
|
||||
|
||||
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¢n de golpe,
|
||||
se¤alar que las entras al '8i8o' pueden funcionar directamente como
|
||||
buses de datos digitales y no solo anal¢gicos.
|
||||
|
||||
|
||||
Û> #include <conio.h>
|
||||
Û> #include "prn_cnt"
|
||||
|
||||
Û> void main( void )
|
||||
Û> {
|
||||
Û> unsigned char estados;
|
||||
Û> Lpt_usado = 1;
|
||||
Û> reset_all();
|
||||
|
||||
|
||||
Û> cprintf( "\n Pulse una tecla para acabar " );
|
||||
Û> cprintf( "\n 1 entrada de datos ON " );
|
||||
Û> cprintf( "\n 0 entrada de datos OFF " );
|
||||
Û> do{
|
||||
Û> gotoxy( 10, 15 );
|
||||
Û> 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 );
|
||||
|
||||
Û> }while( !kbhit() );
|
||||
|
||||
Û> }
|
||||
|
||||
Como puedes ver, la programaci¢n de nuestro dispositivo es tan
|
||||
sencilla como decir donde y que queremos hacer. El limite esta
|
||||
en tu imaginaci¢n y conocimientos.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Creaci¢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¢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¤al de la
|
||||
buena documentaci¢n incluida y el sencillo manejo del '8i8o'.
|
||||
|
||||
De todas formas si tiene alguna pregunta, no dude en realizarnosla.
|
||||
Aprovecho para realizar unas cuantas:
|
||||
|
||||
|
||||
¨ Que complementos tengo para mi '8i8o' ?
|
||||
|
||||
Para saber que complementos, puede adquirir para su '8i8o' solo tiene
|
||||
que editar el fichero CATALOGO.TXT.
|
||||
|
||||
|
||||
¨ Quien es la asociaci¢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‚fono:
|
||||
|
||||
a los propios Creadores del 8i8o :
|
||||
|
||||
Francisco Lopez [hardware] -------> 568 xx xx
|
||||
Francisco Millan [hardware] -------> 568 xx xx
|
||||
Jos‚ David Guill‚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();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user