Pregunta: | 1859 - DIRECCION DEL PUERTO PARALELO |
Autor: | Guillermo Ordaya Espinoza |
Me gustaria saber que función el la adecuada(VC5) para obtener la dirección del puerto paralelo 0x3f8, 0x2f8 automaticamente. Gracias!!! |
Respuesta: | Amadeus |
Dare una pequeña explicacion y luego decides como usarlas y en que programarlas.
Algunas de las direcciones de puertos prinicpales son: 020H - 023H Registros de la mascara de interrupcion. 040H - 043H Temporizador/Contador. 060H Entrada desde teclado. 061H Bocina (bits 0 y 1). 200H - 20FH Controlador de juego. 278H - 27FH Adaptador paralelo de impresora Lpt3. 2F8H - 2FFH Puerto serial COM2 378H - 37FH Adaptador paralelo de impresora Lpt2. 3B0H - 3BBH Adaptador de despliegue mono. 3BCH - 3BFH Adaptador paralelo Lpt1. 3C0H - 3CFH EGA/VGA. 3D0H - 3DFH Adaptador grafico de color 3F0H - 3F7H Controlador de disco duro. 3F8H - 3FFH Puerto serial Com1. Aunque la practica recomendada es utilizar las interrupciones del DOS y del BIOS, puede con seguridad pasar por alto el BIOS cuando accese a los puertos 21H, 40-42H, 60H, 61H y 201H. Por ejemplo, al arranque una rutina en ROM del BIOS busca el sistema por las direcciones de los adaptadores de puerto paralelo y seriales. Si la direccion del puerto serial es encontrado, el BIOS la coloca en su área de datos, empezando en la localidad de memoria 40:00H; si las direcciones de los puertos paralelos son encontrados, el BIOS la coloca en su área de datos, empezando en la localidad 40:08H. Cada localidad tiene espacio para entradas de una palabra. La tabla del BIOS para un sistema con 2 puertos seriales y 2 puertos paralelos se veria asi: 40:00 F803 COM1 40:02 F802 COM2 40:04 0000 No usada 40:06 0000 No usada 40:08 7803 LPT1 40:0A 7802 LPT2 40:0C 0000 No usada 40:0E 0000 No usada En C la rutina quedaria asi. unsigned GetPortAddr (int lptnum) { /* make a far pointer with segment 0x40 and offset 0x008+... then return its value */ return *(unsigned far *)(MK-FP(0X40, 0X008 +(lptnum - 1) * 2)); } Saludos a todos y espero que a alguien le sirva. |
Respuesta: | Elver Gomez Torva |
creo que lo que lo que deseas es la dirección del puerto paralelo para enviar un archivo a la impresora, lo cual se hace de la siguiente manera: void main () { FILE *impresora; impresora=fopen("LPT1", "w");/*LPT1 Nombre del puerto*/ if (!impresora) {printf("la impresora no está lista"); } fputc("Hola", impresora); } |