driver-nt4-ipc 164
Transcription
driver-nt4-ipc 164
TRACEABILITY FORM DOCUMENT FOLLOW-UP Title : DRIVER-NT4-IPC 164 Titre : Edition : 1 (Document creation - Création du document) Written by M. ROCHE Revised by B. THOUËNON on D. PIMONT Approved by 99/38 on on Visa 99/38 Visa 99/38 Visa Warning : Unless otherwise stated, this revision Avertissement : En l’absence d’indication contraire, cette nouvelle édition annule et remplace l’édition précédente qui doit être détruite, overwrites the previous one which must be destroyed, ainsi que les copies faites à vos collaborateurs. along with any copies given to your collaborators. Edition Nature of the modifications (key words) Written Edition Nature des évolutions (mots clés) Rédigé 2 3 4 5 6 DOCUMENT ARCHIVED DOCUMENT ARCHIVE No Yes Revised/Approved Revu/Approuvé by by on on Visa Visa by by on on Visa Visa by by on on Visa Visa by by on on Visa Visa by by on on Visa Visa on ∆ ed. .. [ ] = Document input/output (Entrée/sortie modification de la documentation) # ed. .. [ ] = Board new function input/output (Entrée/sortie nouvelle fonctionnalité du produit) DSQ - 4.5.a - Indice F - 98/41 T.S.V.P. 1 NOTES : 1 DRIVER-NT4-IPC 164 SOMMAIRE A. INSTALLATION DU MATERIEL............................................4 B. INSTALLATION DU LOGICIEL .............................................5 C. GUIDE DE SURVIE ................................................................6 D. FONCTIONS LOGICIELLES..................................................7 DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 3 A. INSTALLATION DU MATERIEL ⇒ L'ordinateur doit être hors tension. ⇒ Déchargez-vous de votre potentiel électrostatique éventuel en touchant une surface métallique. ⇒ Installez les cartes en prenant soin de les configurer suivant les spécifications techniques et vos propres besoins. Rappelons que nos cartes PCI sont Plug en Play et vous dispensent de configurer l'interface avec l'ordinateur. (voir documentation technique de chaque carte et le chapitre annexe). Pour les cartes ISA, il est vivement conseillé de connaître l'environnement PC, notamment pour la configuration des ressources des cartes (Espace IO, Espace Mémoire, Its). Une mauvaise configuration entraîne un blocage du système. ⇒ Mettez l'ordinateur sous tension. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 4 B. INSTALLATION DU LOGICIEL ⇒ Insérez la disquette ou le CDROM dans l'ordinateur. ⇒ Lancez le programme nommé Install.exe ⇒ Entrer l'adresse de base de la carte en hexadécimal, elle doit correspondre à celle qui est configurée par strap sur la carte (carte ISA). ⇒ Entrez le numéro d'interruption de la carte en hexadécimal. Il doit correspondre à celui qui est configuré par strap sur la carte (carte ISA). Si aucune interruption n'est sélectionnée (pas de strap IT sur la carte), entrez la valeur 0 dans le programme d'installation. ⇒ Cliquez sur le bouton Add ⇒ Redémarrez l’ordinateur. A partir de ce stade la machine est en adéquation avec la nouvelle carte installée. Le driver tourne au niveau Kernel. Chaque ressource de la carte peut être sollicitée au niveau « user » en faisant appel aux différents IOControl que nous allons expliquer dans le chapitre suivant. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 5 C. GUIDE DE SURVIE Avec une carte PCI, vous ne devez pas rencontrer de problèmes. Avec une carte ISA, si vous rencontrez un écran bleu (BSOD) après l'installation du driver, il faut orienter la recherche du problème vers : • un conflit dans l'adressage de la carte IO et/ou mémoire • un conflit dans les numéros d'interruption. Sur un Bus ISA, les interruptions ne sont pas partageables. Pour désactiver un driver qui se charge automatiquement à la mise sous-tension, il faut : ⇒ Booter sur une disquette DOS. ⇒ Ensuite aller dans le répertoire <winnt>/system32/drivers et détruire le driver malheureux. ⇒ Rebooter le système normalement sur le disque. Le message d'erreur au moment du logon indique que le driver n'est plus là. ⇒ Relancer la procédure d'installation avec une nouvelle configuration adaptée aux ressources. Pour choisir une ressource, on peut utiliser le programme qui se trouve dans Démarrer> Programmes> Outils d'administration(Commun)> Diagnostics Windows NT Une autre façon de le lancer est d'écrire dans la fenêtre Démarrer> Exécuter winmsd Dans l'onglet Ressources, on trouvera une liste de ressources utilisées. Attention, elle n'est pas forcément exhaustive. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 6 D. FONCTIONS LOGICIELLES Rappels : Windows NT exécute les applications dans le mode user. Uniquement les drivers mode Kernel peuvent tourner en mode Privilégié. C'est le mode qui permet d'accéder aux périphériques. Dans ce contexte, pour gérer au mieux les périphériques, le programmeur utilise les IOCTLs pour communiquer directement avec le driver mode Kernel. Directement dans une application ou par l'intermédiaire d'une DLL. Nous vous conseillons de suivre l'exemple d'application fourni sur la disquette. Le programme exécutable est nommé appli.exe et le fichier source appli.c Ce programme reprend principalement les IOCTLs du driver. IOCTLs La fonction DeviceIoControl envoie directement au driver un code de contrôle. Nous l’utiliserons pour envoyer tous les codes de contrôle supportés par le driver de la carte. BOOL DeviceIoControl( HANDLE hDevice, // handle to device of interest DWORD dwIoControlCode, // control code of operation to perform LPVOID lpInBuffer, // pointer to buffer to supply input data DWORD nInBufferSize, // size of input buffer LPVOID lpOutBuffer, // pointer to buffer to receive output data DWORD nOutBufferSize, // size of output buffer // pointer to variable to receive output byte LPDWORD lpBytesReturned, count LPOVERLAPPED lpOverlapped // pointer to overlapped structure for asynchronous operation ); DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 7 IOCTL Description Eléments envoyés Eléments reçus IOCTL_IPC164_RESET Reset Soft du Zilog 8536 NULL NULL IOCTL_IPC164_INIT Initialisation complète des registres du NULL Zilog 8536 Lecture IO 8 bits - l'index par rapport à la l'adresse de base Ecriture IO 8 bits - l'index par rapport à la l'adresse de base - la valeur 8 bits à écrire Lecture channel 16 bits - l'index par rapport à la l'adresse de base Ecriture channel 16 bits - l'index par rapport à la l'adresse de base - la valeur 16 bits à écrire Rapport des interruptions NULL NULL Positionne le masque, la transition et la polarité pour une voie Masque toutes les Its Voies NULL IOCTL_IPC164_READ IOCTL_IPC164_WRITE IOCTL_IPC164_READ_CHANNEL IOCTL_IPC164_WRITE_CHANNEL IOCTL_IPC164_INTERRUPTION IOCTL_IPC164_GENIT IOCTL_IPC164_MASKIT - le numéro de voie - le type d'interruption NULL IOCTL_IPC164_WAIT_MICROSECONDES Génère une tempo de 50 NULL Microsecondes minimum IOCTL_IPC164_NUM_VERSION Retourne le numéro de version du driver NULL DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 8 Valeur lue 8 bits NULL Valeur lue 16 bits NULL 6 valeurs 32 bits dans l'ordre : - InterruptCount; - InterruptTimer1Count ; - InterruptTimer2Count ; - InterruptTimer3Count ; - InterruptPortACount ; - InterruptPortBCount ; NULL NULL Pointeur sur la version IOCTL_IPC164_RESET Génère un Reset soft du boîtier Zilog 8536 Bit D0 du Master Interrupt Control Register. dwIoControlCode = IOCTL_IPC164_RESET; // operation code lpInBuffer = NULL; // address of input buffer; not used; must be NULL nInBufferSize = 0; // size of input buffer; not used; must be zero lpOutBuffer = NULL; // address of output buffer; not used; must be NULL nOutBufferSize = 0; // size of output buffer; not used; must be zero lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters lpInBuffer Points to an input buffer. Not used with this operation. Set to NULL. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. Not used with this operation. Set to zero. lpOutBuffer Points to an output buffer. Not used with this operation. Set to NULL. nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. Not used with this operation. Set to zero. lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. If the operation fails, DeviceIoControl returns FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 9 IOCTL_IPC164_INIT Initialisation complète des registres du Zilog 8536 pour une utilisation standard Port A et B en entrée. Gestion du signal Timer. dwIoControlCode = IOCTL_IPC164_INIT; // operation code lpInBuffer = NULL; // address of input buffer; not used; must be NULL nInBufferSize = 0; // size of input buffer; not used; must be zero lpOutBuffer = NULL; // address of output buffer; not used; must be NULL nOutBufferSize = 0; // size of output buffer; not used; must be zero lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters lpInBuffer Points to an input buffer. Not used with this operation. Set to NULL. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. Not used with this operation. Set to zero. lpOutBuffer Points to an output buffer . Not used with this operation. Set to NULL. nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. Not used with this operation. Set to zero. lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. If the operation fails, DeviceIoControl returns FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 10 IOCTL_IPC164_READ Lecture IO 8 bits : Valeurs possible : [Base+0,Base+0x0F]. On met le delta par rapport a la Base dans BufferRW En retour on lit le caractère reçu dans Valreturn. dwIoControlCode = IOCTL_IPC164_READ; // operation code lpInBuffer = BufferRW; // address of input buffer; nInBufferSize = 4; // size of input buffer; lpOutBuffer = &Valreturn; // address of output buffer; nOutBufferSize = 4*1; // size of output buffer; lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters lpInBuffer Points to an input buffer for the delta base value. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. 4 lpOutBuffer Points to the value read buffer . nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. 4 lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. If the operation fails, DeviceIoControl returns FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 11 IOCTL_IPC164_WRITE Ecriture IO 8 bits: Valeurs possible : [Base+0,Base+0x0F]. On met le delta par rapport a la Base dans BufferRW[0] On met la valeur 8 bits à écrire dans BufferRW[1] dwIoControlCode = IOCTL_IPC164_WRITE; // operation code lpInBuffer = BufferRW; // address of input buffer; nInBufferSize = 4*2; // size of input buffer; lpOutBuffer = NULL; // address of output buffer; nOutBufferSize = 0; // size of output buffer; lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters lpInBuffer Points to an input buffer. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. 4*2 here lpOutBuffer Points to an output buffer . Not used with this operation. Set to NULL. nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. Not used with this operation. Set to zero. lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. If the operation fails, DeviceIoControl returns FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 12 IOCTL_IPC164_READ_CHANNEL Lecture channel 16 bits: Valeurs possible : 0,2,4,6. Cette valeur représente le delta par rapport à l'adresse de base. On met le delta par rapport a la Base dans BufferRW En retour on lit le mot reçu dans Valreturn. dwIoControlCode = IOCTL_IPC164_READ_CHANNEL; // operation code lpInBuffer = BufferRW; // address of input buffer; nInBufferSize = 4; // size of input buffer; lpOutBuffer = &Valreturn; // address of output buffer; nOutBufferSize = 4*1; // size of output buffer; lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters lpInBuffer Points to an input buffer for the delta base value. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. 4 lpOutBuffer Points to the value read buffer . nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. 4 lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. If the operation fails, DeviceIoControl returns FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 13 IOCTL_IPC164_WRITE_CHANNEL Ecriture channel 16 bits: Valeurs possible : 0,2,4,6. Cette valeur représente le delta par rapport à l'adresse de base. On met le delta par rapport a la Base dans BufferRW dwIoControlCode = IOCTL_IPC164_WRITE_CHANNEL; // operation code lpInBuffer = BufferRW; // address of input buffer; nInBufferSize = 4*2; // size of input buffer; lpOutBuffer = NULL; // address of output buffer; nOutBufferSize = 0; // size of output buffer; lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters lpInBuffer Points to an input buffer. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. 4*2 here lpOutBuffer Points to an output buffer . Not used with this operation. Set to NULL. nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. Not used with this operation. Set to zero. lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values • If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. If the operation fails, DeviceIoControl returns FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 14 IOCTL_IPC164_ INTERRUPTION Permet d’obtenir un rapport sur les interruptions . Ce rapport est remis a zéro une fois l'opération terminée. Les valeurs de retour sont : BufferRW [0] =InterruptCount; nombre total d'interruptions reçues depuis le dernier rapport BufferRW [1] =InterruptTimer1Count; nombre d'interruptions reçues sur le timer1 non utilisé par défaut BufferRW [2] =InterruptTimer2Count; nombre d'interruptions reçues sur le timer2 non utilisé par défaut BufferRW [3] =InterruptTimer3Count; nombre d'interruptions reçues sur le timer3 BufferRW [4] =InterruptPortACount; nombre d'interruptions reçues sur le port A BufferRW [5] =InterruptPortBCount; nombre d'interruptions reçues sur le port B dwIoControlCode = IOCTL_IPC164_INTERRUPTION; // operation code lpInBuffer = NULL; // address of input buffer; Not used with this operation. Set to NULL. nInBufferSize = 0; // size of input buffer; Not used with this operation. Set to zero. lpOutBuffer = &BufferRW; // address of output buffer nOutBufferSize = 4*6 ; // size of output buffer; 6 DWORDs return lpBytesReturned = &cbReturned; // address of number of bytes read Parameters lpInBuffer Points to an input buffer. Not used with this operation. Set to NULL. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. Not used with this operation. Set to zero. lpOutBuffer Points to an output buffer. nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. The driver return 6 DWORDs lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. The DeviceIoControl couldn't return FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 15 IOCTL_IPC164_GENIT Pour une voies données [0,15] le driver positionne son masque, sa transition et sa polarité On doit envoyé au driver le numéro de voie [0,15] et le type d'interruption pour cette voie [0,5] Le type d'interruption est codé de la façon suivante: typeit 0 it niveau zero typeit 1 it niveau un typeit 2 it front montant typeit 3 it front descendant typeit 4 it fronts (montant et/ou descendant) typeit 5 it masque la voie On met numvoieIt dans BufferRW[0] On met typeIt dans BufferRW[1] dwIoControlCode = IOCTL_IPC164_GENIT; // operation code lpInBuffer = BufferRW; // address of input buffer; nInBufferSize = 4*2; // size of input buffer; lpOutBuffer = NULL; // address of output buffer; nOutBufferSize = 0; // size of output buffer; lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters lpInBuffer Points to an input buffer. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. 4*2 here lpOutBuffer Points to an output buffer . Not used with this operation. Set to NULL. nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. Not used with this operation. Set to zero. lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. If the operation fails, DeviceIoControl returns FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 16 IOCTL_IPC164_MASKIT Ce code masque toutes le interruptions de chaque Voies (port A et port B du zilog 8536) dwIoControlCode = IOCTL_IPC164_MASKIT; // operation code lpInBuffer = NULL;// Not used with this operation. Set to NULL. nInBufferSize = 0; // Not used with this operation. Set to zero. lpOutBuffer = NULL; // Not used with this operation. Set to NULL. nOutBufferSize = 0 ; // Not used with this operation. Set to zero. lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters no parameters needs. Return Values If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. The DeviceIoControl couldn’t return FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 17 IOCTL_IPC164_WAIT_MICROSECONDES Cette commande permet d’utiliser une temporisation Elle est notamment utilisé pendant les opérations de changement des états des voies en sortie. Nous rappelons qu'il y a un temps de commutations de quelques microsecondes sur les voies en sortie. Cette commande ne donne pas un temps référentiel unique pour toutes les plates-formes. Elle assure cependant un temps d'attente minimum de 50 microsecondes. dwIoControlCode = IOCTL_IPC164_WAIT_MICROSECONDES; // operation code lpInBuffer = NULL;// Not used with this operation. Set to NULL. nInBufferSize = 0; // Not used with this operation. Set to zero. lpOutBuffer = NULL; // Not used with this operation. Set to NULL. nOutBufferSize = 0 ; // Not used with this operation. Set to zero. lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters lpInBuffer Points to an input buffer. Not used with this operation. Set to NULL. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. Not used with this operation. Set to zero. lpOutBuffer Points to an output buffer. Not used with this operation. Set to NULL. nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. Not used with this operation. Set to zero. lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values If the operation succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. If the operation fails, DeviceIoControl returns FALSE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 18 IOCTL_IPC164_NUM_VERSION Cette commande retourne le numéro de version du driver de la carte. Ce numéro comporte 4 octets. Il est codé en ASCII suivant l'exemple : BufferRW= 0x56313130; soit V 1 1 0 dwIoControlCode = IOCTL_IPC164_NUM_VERSION; // operation code lpInBuffer = NULL;// Not used with this operation. Set to NULL. nInBufferSize = 0; // Not used with this operation. Set to zero. lpOutBuffer = &BufferRW; // address of output buffer nOutBufferSize = 4*1 ; // size of output buffer; 1 DWORDs return lpBytesReturned =&cbReturned; // address of actual bytes of output Parameters lpInBuffer Points to an input buffer. Not used with this operation. Set to NULL. nInBufferSize Specifies the size, in bytes, of the buffer pointed to by lpInBuffer. Not used with this operation. Set to zero. lpOutBuffer Points to an output buffer. nOutBufferSize Specifies the size, in bytes, of the buffer pointed to by lpOutBuffer. lpBytesReturned Points to a DWORD that receives the actual size, in bytes, of the data stored into lpOutBuffer. Return Values The operation always succeeds and the device IPC 164 is accessible, DeviceIoControl returns TRUE. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 19 APPLI.EXE Ce programme est fourni sur la disquette. Il reprend les codes IOCTL dans des exemples simples, et vous permettra avec son code source de démarrer votre projet rapidement. Le programme source peut être directement compilé avec la chaîne Microsoft Developer Studio. DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 20 ANNEXE : PC Memory Address Map 0-9ffffh A0000h-Bffffh C0000h-C7fffh C8000h-Dffffh E0000h-Effffh F0000h-Fffffh 100000h-FFF0000h FFFF0000h-FFFFFFFh Base Memory Video RAM Video BIOS BIOS Extension ROM BIOS Extension ROM System BIOS ROMs In Real mode System RAM System BIOS ROM After hard RESET 640 KB 128 KB 32 KB 96 KB 64 KB 64 KB ~ 4 GB 64 KB Ressource éventuellement exploitable par une carte ISA DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 21 PC I/O Address Map 000-01F 020-03f 040-05F 060-06F 070-07F 080-09F 0A0-0BF 0C0-0DF 0F0 0F1 0F2-0FF 170-177 1F0-1F7 220-22F 278-27E 2E8-2EF 2F8-2FF 300-31F 360-36F 378-37E 388-38B 3BC-3BE 3E8-3EF 3F0-3F7 3F8-3FF 4D0 4D1 0534 – 0537 CF8-CFF DMA controller 1 Interrupt controller (Master) Interval Timer Keyboard controller Real Time Clock RTC DMA page register Interrupt controller (Slave) DMA controller 2 Clear Math co-processor busy Reset Math co-processor Math co-processor Secondary IDE controller Primary IDE controller Audio LPT2 COM4 COM2 Prototype Card Network LPT1 Audio synthesizer LPT3 COM3 Diskette controller COM1 Edge/level control register INTCNTRL1 Edge/level control register INTCNTRL2 Windows Sound System-compatible PCI configure space control register Ressource éventuellement exploitable par une carte ISA DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 22 PC INTERRUPT LEVELS IRQ0 IRQ1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 IRQ8 IRQ9 IRQ10 IRQ11 IRQ12 IRQ13 IRQ14 IRQ15 Timer Tick Keyboard Controller Cascade interrupt COM2, COM4 COM1, COM3 Audio Diskette LPT1, LPT3 Real time clock (PCI device) default video (PCI device) default SCSI (PCI device) default audio Mouse interrupt Math co-processor IDE primary IDE secondary Ressource éventuellement exploitable par une carte ISA DRIVER NT4 – IPC 164 – Version 1.10 - Edition 1 : 99/38 23