Regresar   Foro de marcianitos.org > Emuladores y programas de todo tipo > Sistemas operativos > MS-DOS

 
 
Old 24-mar-2007, 13:06   #11
sebastia2000
Marciano
 
Avatar de sebastia2000
Recuerda, Bubu, que el interfaz del puerto paralelo no es exactamente el mismo que temnemos en tutoriales., Así lo dice manofwar, que yo de electrónica entiendo lo mismo que de cohetes espaciales, así que de las diferencias entre ambos, yo ni papa, pero convendría, algún altruista de sabiduría que explicase a los no-iniciados, como se construye ese sistema.
Bueno, a lo mejor ya esta bien...y soy yo el que necesita ponerse.

Un saludo a todos.
Old 24-mar-2007, 14:01   #12
Dr. Fred Uilleann
Marciano
 
Avatar de Dr. Fred Uilleann
Es una de las mejores noticias del año, creo. Bubu, ArcaDos va a ser la leche con esta nueva posibilidad!!
Old 25-mar-2007, 14:06   #13
Bubu
Editor Marciano
Hay una cosa que no entiendo. En la péich del invento aparece un pequeño pograma en C que es el que lee el puerto y envía letras:

Code:
#include <stdio.h>
#include <dos.h>
#include <conio.h>
int main(void)
{
   int port = 0x378;                                        // LPT1
   int i,j,k,l,m;
   clrscr();
   outportb(port+2,0x04);                                   // 4 extra inputs
   outportb(port,0xFF);                                     // all out high
   for (i=0;i<30000;i++)
   {
      m=0xFE;                                               // start with 1st js
      for (j=0;j<7;j++)                                     // js1-7
      {
         outportb (port,m);                                 // active js to low
         m<<=1;                                             // shift the low signal
         m=m | 0x1;
         k=inportb(port+1);
         l=inportb(port+2);
         gotoxy(1,(j+1));
         printf("js%d:  ",(j+1));
         if (!(k & 16))  printf("up ");                     // Select    B4
         if (!(k & 32))  printf("down ");                   // PaperEnd  B5
         if (!(k & 64))  printf("left ");                   // -ACK      B6
         if ((k & 128))  printf("right ");                  // Busy      B7
         if (!(k & 8))   printf("F1 ");                     // -Error    B3
         if ((l & 2))    printf("F2 ");                     // -AutoFeed C1
         if (!(l & 4))   printf("F3 ");                     // -SelectIn C2
         if ((l & 8))    printf("F4 ");                     // Init      C3
         if ((l & 1))    printf("F5 ");                     // -Strobe   C0
         printf("                                    \r");  // clearing the line
      }
   }
        return 0;
}
¿Ese .COM o .EXE compilado ande se pone?
Old 25-mar-2007, 22:24   #14
MioTraGus
Usuario registrado
para mi que eso es el driver en si, pero sin compilar.

Gran descubrimiento este, voy a estudiarmelo a ver que saco en claro.
Old 26-mar-2007, 00:00   #15
Bubu
Editor Marciano
No creo que sea el driver. Ten en cuenta que eso lo que hace es leer el puerto, y sacar por pantalla lo que has pulsado. Parece que es un tester más bien, ¿no?
Old 26-mar-2007, 10:29   #16
Manofwar
Marciano
 
Avatar de Manofwar
Como dice Bubu eso es un programilla para comprobar el funcionamiento. Dos o tres líneas más arriba hay unos enlaces a dos programas ya compilados, uno comprueba el funcionamiento del LPT1 y otro para el LPT2.

Este fin de semana he estado haciendo un driver con ese código y funciona bien mientras no ejecute otro programa. Cuando ejecuto algo me devuelve un error el EMM386 de problemas con los privilegios o problemas de memoria, el error es el número 9.

A ver si alguien me puede ayudar con esto y lo terminamos. El driver es un TSR programado en ensamblador.

Saludos
Old 26-mar-2007, 17:10   #17
Bubu
Editor Marciano
Quote:
Originalmente publicado por Manofwar Ver post
funciona bien mientras no ejecute otro programa.
Me lo temía, es un pograma para tú añadirlo a otro que estés haciendo y quieras controlar por el puerto paralelo, pero lo que buscamos es algo que se instale, y en segundo plano (mediante interrupciones) esté continuamente leyendo el puerto y responda en consecuencia. No sé yo si al final esto es válido... Habría que catarlo bien.
Old 26-mar-2007, 17:20   #18
sebastia2000
Marciano
 
Avatar de sebastia2000
Quote:
Originalmente publicado por Manofwar Ver post
En cuanto a la configuración de las teclas aún no lo he mirado, pero imagino que será algo como esto "event_assign up up or 8_pad" . Esta es la configuración para moverse hacia arriba en el menú y a mí me funcionó, lo que no recuerdo es si funcionaba con los 2 joystick o solo con el joystick número 1.
Pero eso es necesario para advmame y advmenu.
Un poco más arriba manofwar, has dicho que podemos asignar eventos con esos valores de acción.¿?
No van por ahí los tiros.....??
para que más necesitamos un driver?

Editado por sebastia2000 en 26-mar-2007 a las 18:00.
Old 26-mar-2007, 23:36   #19
Manofwar
Marciano
 
Avatar de Manofwar
No es necesario un driver para advmenu o advmame, pero si para otros emuladores que puede lanzar el advmenu. Es por esto mi intención de hacer el programa residente (TSR) o driver si preferis llamarlo así.

¿Alguien puede decirme algo sobre el error del EMM386?

Saludos
Old 26-mar-2007, 23:41   #20
Macarro
Administrador
 
Avatar de Macarro
Habla con D_Skywalk que a lo mejor te puede ayudar.

Un saludo.