Logo Foltyn Presentation
Table of Contents Previous Page Next Page
Content-Symbol-Img


2 Computers Data-Exchange over
the parallel-port
ParPortLogo

Page  1 2 3 4

The parallel interface of the PC

Internal Registers

 Schnittstelle 
(Interface)
 Datenregister 
Adresse
 Statusregister 
Adresse
 Steuerregister 
Adresse
13BCh3BDh3BEh
2378h379h37Ah
3278h279h27Ah
42BCh2BDh2BEh


The control of the internal registers


40:08  Basisadresse  LPT1 (Adresse d. Datenregisters)  16 Bit
40:0A  Basisadresse  LPT2 (Adresse d. Datenregisters)  16 Bit
40:0C  Basisadresse  LPT3 (Adresse d. Datenregisters)  16 Bit
40:0E  Basisadresse  LPT4 (Adresse d. Datenregisters)  16 Bit
40:11  Systemkonfiguration, hier speziell: das 7. und 8. Bit
         enthalten binär codiert die Anzahl der vorhandenen
         parallelen Schnittstellen

Bei Verwendung des DEBUG gehen Sie folgendermaßen vor:

Nach Aufruf des DEBUG geben Sie ein: d  40:11
Auf dem Bildschirm erscheint:

-d  40:11
0040:0010     44 FF 80 02 00 00 A0-00 00 28 00 28 00 08 0E
0040:0020  3A 34 30 0B 38 09 0D 1C-20 39 64 20 65 12 62 30
0040:0030  65 12 0D 1C 64 20 20 39-34 05 30 0B 3B 33 00 00


Ergebnis: 44h = 01000100. Die höchstwertigen Bits enthalten binär codiert die Anzahl der Schnittstellen, hier also 01!
Dann geben Sie ein, um die Adresse(n) der Schnittstelle(n) zu finden:  d  40:08

Auf dem Bildschirm erscheint:

-d  40:08
0040:0000                          78 03 00 00 00 00 00 00
0040:0010  61 44 FF 80 02 00 00 A0-00 00 28 00 28 00 08 0E
0040:0020  3A 34 30 0B 38 09 0D 1C-20 39 64 20 65 12 62 30

Ergebnis: 0378h (das niederwertige Byte der Adresse steht - entsprechend der Intel-Konvention - jeweils zuerst im Speicher). Dann den Debugger verlassen mit:

-q


Vorschlag zum automatischen Hereinlesen der Portadresse von Port 1

portadr??=0

  ! push ds
  ! mov ax,&h40
  ! mov ds,ax
  ! mov ax,[&h08]          oder  >>>   def seg = &h40
  ! pop ds                             portadr??=peeki(&h08)
  ! mov portadr??,ax

datenreg??=portadr??
statusreg??=portadr??+1
steuerreg??=portadr??+2

Ansteuerung des EPP-Ports

In order to read in the data register there are two condition that must be met:

1. the port should be in PS/2 mode.  This is accomplished by setting the upper 3 bits of the ECR register to '001'.  The ECR is located at address "base + 0x402h".  For your card it would be at 278+402 = 67A.  Read this i/o location and write it out with the upper bits set to 001.

2. to read data on the data pins, set the port to input mode.  This is done by setting the direction control bit of the port control register: bit 5 of port 27A.  Set this to a 1 to make the port an input port, 0 for output.

A great source of info for this is the Standard Microsystems datasheet for the FDC37C665/666 super i/o controller.  Go to www.smc.com and search for it.