home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / noyau / noyau.lst < prev    next >
File List  |  1994-05-25  |  15KB  |  387 lines

  1. Microsoft (R) Macro Assembler Version 6.00                 05/26/94 03:29:46
  2. NOYAU.ASM                             Page 1 - 1
  3.  
  4.  
  5.                 .286
  6.                 .MODEL SMALL,OS_DOS
  7.  
  8.                 ;
  9.                 ;
  10.                 ;    DEFINITION DU PROCESSUS NOYAU : POINT D'ENTREE DU PROGRAMME
  11.                 ;
  12.                 ;
  13.                 ;
  14.  
  15.                 INCLUDE dos.inc
  16.                   C ; DOS.INC
  17.                   C 
  18.                   C MsDos MACRO
  19.                   C     int     21h
  20.                   C ENDM
  21.                   C 
  22.                 INCLUDE types.inc
  23.                   C ; Types.inc
  24.                   C ;
  25.                   C ;............ Définition des types d'objets ................
  26.                   C ;
  27.                   C 
  28.  = 0003                  C TypeSemaphore    EQU 00000011b    ; sémaphore sans delta-liste (DIJKSTRA)
  29.                   C 
  30.  = 0004                  C TypeTampon    EQU 00000100b    ; tampon circulaire de communication
  31.                   C 
  32.  = 000C                  C TypeQueue    EQU 00001100b    ; cellule de garde d'une liste chainée
  33.                   C 
  34.  = 001C                  C TypeProcTPU    EQU 00011100b    ; processus utilisateur temps partagé
  35.  = 001D                  C TypeProcTRU    EQU 00011101b    ; processus utilisateur temps réel
  36.  = 001E                  C TypeProcTPS    EQU 00011110b    ; processus système temps partagé
  37.  = 001F                  C TypeProcTRS    EQU 00011111b    ; processus système temps réel
  38.  = 001C                  C TypeProcessus    EQU TypeProcTPU ; type générique pour les processus
  39.                   C 
  40.                 INCLUDE const.inc
  41.                   C ;
  42.                   C ; const.inc
  43.                   C ;
  44.                   C 
  45.  = 0020                  C EOI         EQU 20h        ; octet d'acquittement d'interruption au pic 8259A
  46.  = 0020                  C PortCTRLpic  EQU 20h        ; port de controle du PIC
  47.  = 03F2                  C PortCTRLfdc  EQU 03F2h        ; port de controle du controleur de disquette
  48.  = FFFF                  C NIL         EQU 0FFFFh
  49.  = 0001                  C ENCORE         EQU 1        ; marque suite execution du noyau
  50.  =-0002                  C FIN         EQU NOT ENCORE ; marque la fin
  51.  = 0100                  C DimPile      EQU 256        ; nombre de mots d'une pile privée
  52.  = 000C                  C NbRegs         EQU 12        ; nombre de registres du contexte initial
  53.  = F202                  C ETAT_INITIAL EQU 1111001000000010b  ; valeur initiale du registre d'état
  54.                   C 
  55.                 INCLUDE etats.inc
  56.                   C ;
  57.                   C ; fichier des etats d'un processus ou d'un descripteur d'objet
  58.                   C ;
  59.                   C ; Etats.inc
  60.                   C ;
  61.                   C 
  62.  = 0000                  C nEtat = 0
  63.                   C FOR EtatProc,<NON_EXISTANT,ACTIF,PRET,BLOQUE,EN_ATTENTE,SUSPENDU>
  64.                   C     &EtatProc  EQU  nEtat+0
  65.                   C            nEtat = nEtat + 1
  66.                   C ENDM
  67.  = 0000                 1C     NON_EXISTANT  EQU  nEtat+0
  68.  = 0001                 1C            nEtat = nEtat + 1
  69.  = 0001                 1C     ACTIF  EQU  nEtat+0
  70.  = 0002                 1C            nEtat = nEtat + 1
  71.  = 0002                 1C     PRET  EQU  nEtat+0
  72.  = 0003                 1C            nEtat = nEtat + 1
  73.  = 0003                 1C     BLOQUE  EQU  nEtat+0
  74.  = 0004                 1C            nEtat = nEtat + 1
  75.  = 0004                 1C     EN_ATTENTE  EQU  nEtat+0
  76.  = 0005                 1C            nEtat = nEtat + 1
  77.  = 0005                 1C     SUSPENDU  EQU  nEtat+0
  78.  = 0006                 1C            nEtat = nEtat + 1
  79.                   C 
  80.  = 0000                  C TERMINE EQU NON_EXISTANT
  81.  = 0000                  C LIBRE    EQU NON_EXISTANT
  82.  =-0001                  C OCCUPE    EQU (NOT LIBRE)+0
  83.  =-0001                  C INFINI    EQU (NOT LIBRE)+0
  84.                   C 
  85.                 INCLUDE descript.inc
  86.                   C ;  descript.inc
  87.                   C ;
  88.                   C ;        Description d'un objet du noyau
  89.                   C ;
  90.                   C ;
  91.                   C 
  92.  0009                  C DESCRIPTEUR    STRUCT
  93.  0000  0000              C     precedent    WORD    ?   ; lien de chainage sur le descripteur précédent
  94.  0002  0000              C     suivant    WORD    ?   ; lien de chainage sur le descripteur suivant
  95.  0004  0000              C     identite    WORD    ?   ; n° de poste dans la table des descripteurs de l'objet
  96.  0006  00              C     TypeObjet    BYTE    ?   ; type de l'objet référencé par le descripteur
  97.  0007  00              C     etat    BYTE    ?   ; état actuel du descripteur ou de l'objet
  98.  0008  00              C     priorite    BYTE    ?   ; clé d'ordonnancement des descripteurs
  99.                   C DESCRIPTEUR    ENDS
  100.                   C 
  101.  = WORD PTR identite          C identification    EQU <WORD PTR identite> ; identification de l'objet
  102.  = 0009                  C DimDescripteur    EQU SIZEOF DESCRIPTEUR    ; nombre d'octets du descripteur
  103.                   C 
  104.                 INCLUDE queue.inc
  105.                   C ; Queue.inc
  106.                   C 
  107.  = DESCRIPTEUR              C QUEUE    EQU <DESCRIPTEUR>   ; Une queue est un DESCRIPTEUR
  108.                   C 
  109.                 INCLUDE semphor.inc
  110.                   C ; SEMPHOR.INC
  111.                   C ;        Definition du type semaphore
  112.                   C ;
  113.                   C 
  114.  000A                  C SEMAPHORE    STRUCT
  115.  0000  0000 0000 0000 03      C          DESCRIPTEUR <,,,TypeSemaphore,LIBRE,INFINI>
  116.        00 FF
  117.  0009  00              C     compteur BYTE     ?
  118.                   C SEMAPHORE    ENDS
  119.                   C 
  120.                 INCLUDE process.inc
  121.                   C ; Process.inc : descripteurs de processus
  122.  000F                  C PROCESSUS STRUCT
  123.  0000  0000 0000 0000 1C      C       DESCRIPTEUR <,,,TypeProcessus,LIBRE,>
  124.        00 00
  125.  0009  0000              C   Reg_SP  WORD          ?
  126.  000B  0000              C   Reg_SS  WORD          ?
  127.  000D  0000              C   file      WORD          ?
  128.                   C PROCESSUS ENDS
  129.                   C 
  130.                 INCLUDE gestlist.inc
  131.                   C ; Gestlist.inc
  132.                   C ;
  133.                   C ;.......  Importation des fonctions de gestion de liste ..............
  134.                   C ;
  135.                   C 
  136.                   C EXTERNDEF   insere        : NEAR
  137.                   C EXTERNDEF   recherche        : NEAR
  138.                   C EXTERNDEF   InsereItem        : NEAR
  139.                   C 
  140.                   C EXTERNDEF   extrait        : NEAR
  141.                   C EXTERNDEF   PremierDeListe  : NEAR
  142.                   C EXTERNDEF   DernierDeListe  : NEAR
  143.                   C 
  144.                   C EXTERNDEF   FileVide        : NEAR
  145.                   C EXTERNDEF   InitVide        : NEAR
  146.                   C 
  147.                   C EXTERNDEF   empiler        : NEAR
  148.                   C EXTERNDEF   Depiler        : NEAR
  149.                   C 
  150.                 INCLUDE donnees.inc
  151.                   C ;
  152.                   C ;   Segment des données du noyau
  153.                   C ;
  154.                   C ; donnees.inc
  155.                   C 
  156.                   C EXTERNDEF   EnCours  : WORD       ; pointeur sur descripteur processus ACTIF
  157.                   C EXTERNDEF   QueueExp : WORD       ; pointeur sur liste des descripteurs procs PRETs
  158.                   C EXTERNDEF   NonPreemptif : BYTE    ; état d'execution du noyau
  159.                   C EXTERNDEF   FinNoyau     : BYTE    ; marque le noyau terminé
  160.                   C EXTERNDEF   NoyauFini     : BYTE    ; marque la tâche horloge terminée
  161.                   C EXTERNDEF   pHorloge   : PROCESSUS ; descripteur du processus HORLOGE
  162.                   C EXTERNDEF   pPrincipal : PROCESSUS ; descripteur du processus PRINCIPAL
  163.                   C 
  164.                 INCLUDE code.inc
  165.                   C ;
  166.                   C ;   CODE.INC
  167.                   C ;   Import/export des fonctions du noyau
  168.                   C ;
  169.                   C 
  170.                   C EXTERNDEF   eligible    : NEAR
  171.                   C EXTERNDEF   dispatcher    : NEAR
  172.                   C EXTERNDEF   P : NEAR
  173.                   C EXTERNDEF   V : NEAR
  174.                   C 
  175.  
  176.                 .STACK 1024     ; pile privée de pNoyau
  177.  
  178.  0000                PilePrincipal SEGMENT WORD PUBLIC 'STACK'
  179.                     EXTERN  SP_PilePrincipal : WORD
  180.  0000                PilePrincipal ENDS
  181.  
  182.  0000                .DATA
  183.  
  184.  0000                TableCentrale LABEL WORD
  185.  0000 0000                EnCours  WORD ?    ; pointeur sur le DdP du processus ACTIF
  186.  0002 0000                QueueExp WORD ?    ; pointeur sur la cellule de garde de la Queue d'exploitation
  187.  
  188.  0004                TableProcessus LABEL WORD
  189.  0004 0000 0000 0000 1C            pNoyau      PROCESSUS <{,,,TypeProcessus,ACTIF,254}> ; Processus Noyau
  190.        01 FE 0000 0000
  191.        0000
  192.  
  193.  0013 0000 0000 0000 1C            pPrincipal    PROCESSUS <{,,,TypeProcessus,SUSPENDU,128},OFFSET SP_PilePrincipal,PilePrincipal,NIL>
  194.        05 80 0000 E ---- R
  195.        FFFF
  196.  
  197.  
  198.  0022 0022 R 0022 R 0000        qe          QUEUE     <OFFSET @data:qe,OFFSET @data:qe,,TypeQueue,OCCUPE,INFINI>
  199.        0C FF FF
  200.  
  201.  002B 00                NonPreemptif    BYTE 0  ; Le noyau est initialement préemptif
  202.  002C 01                FinNoyau        BYTE ENCORE ; flag pour que pHorloge rétablisse l'ancien vecteur
  203.                                 ; d'interruption
  204.  002D 01                NoyauFini        BYTE ENCORE ; flag pour prévenir pNoyau qu'il peut rendre la main
  205.                                 ; à MS DOS
  206.  
  207.  0000                .CODE
  208.  
  209.  0000                Noyau PROC
  210.                     assume ds:@data
  211.  0000  B8 ---- R            mov ax,@data
  212.  0003  8E D8                mov ds,ax
  213.  
  214.  0005  B8 0004 R            lea ax,pNoyau        ; initialisation de Encours
  215.  0008  BE 0000 R            lea si,EnCours
  216.  000B  89 04                mov [si],ax
  217.  000D  BE 0002 R            lea si,QueueExp        ; et de la Queue d'exploitation
  218.  0010  C7 04 0022 R            mov [si],OFFSET qe
  219.  
  220.  
  221.  0014  BB 0000 E            mov bx,OFFSET pHorloge    ; on place pHorloge dans la queue d'exploitation
  222.  0017  E8 0000 E            call eligible
  223.  001A  E8 0000 E            call dispatcher        ; et on lui donne la main
  224.  
  225.  001D  BB 0013 R            mov bx,OFFSET pPrincipal    ; on place pPrincipal dans la queue d'exploitation
  226.  0020  E8 0000 E            call eligible
  227.  
  228.  0023  E8 0000 E            call dispatcher        ; et hop, pPrincipal s'execute (car sa priorité est
  229.                                 ; plus forte).
  230.  
  231.                     ; le dispatcher à rendu la main à pNoyau, donc tous les autres processus
  232.                     ; sont bloqués ou terminés.
  233.                     ; donc,on termine le noyau !
  234.  
  235.  0026  BF 002C R            mov di,offset FinNoyau    ; on demande à pHorloge de rétablir l'ancien
  236.  0029  C6 05 FE                mov BYTE PTR [di],FIN    ; vecteur d'interruption
  237.  002C  BE 002D R            mov si,offset NoyauFini
  238.  002F                attente_fin:
  239.  002F  80 3C FE                cmp BYTE PTR [si],FIN    ; on attend.
  240.  0032  75 FB                jne attente_fin
  241.  
  242.                         ; le système n'est plus multitache.
  243.                         ; on retourne au dos
  244.  
  245.  0034  B8 4C00                Mov ax,4C00h
  246.  0037  CD 21                Int 21h        ; on rend la main à MS DOS
  247.  0039                Noyau ENDP
  248.  
  249.                 END NOYAU
  250. Microsoft (R) Macro Assembler Version 6.00                 05/26/94 03:29:46
  251. NOYAU.ASM                             Symbols 2 - 1
  252.  
  253.  
  254.  
  255.  
  256. Macros:
  257.  
  258.                 N a m e                 Type
  259.  
  260. MsDos  . . . . . . . . . . . . .    Proc
  261.  
  262.  
  263. Structures and Unions:
  264.  
  265.                 N a m e                  Size
  266.                                          Offset      Type
  267.  
  268. DESCRIPTEUR  . . . . . . . . . .     0009
  269.   precedent  . . . . . . . . . .     0000         Word
  270.   suivant  . . . . . . . . . . .     0002         Word
  271.   identite . . . . . . . . . . .     0004         Word
  272.   TypeObjet  . . . . . . . . . .     0006         Byte
  273.   etat . . . . . . . . . . . . .     0007         Byte
  274.   priorite . . . . . . . . . . .     0008         Byte
  275. PROCESSUS  . . . . . . . . . . .     000F
  276.   precedent  . . . . . . . . . .     0000         Word
  277.   suivant  . . . . . . . . . . .     0002         Word
  278.   identite . . . . . . . . . . .     0004         Word
  279.   TypeObjet  . . . . . . . . . .     0006         Byte
  280.   etat . . . . . . . . . . . . .     0007         Byte
  281.   priorite . . . . . . . . . . .     0008         Byte
  282.   Reg_SP . . . . . . . . . . . .     0009         Word
  283.   Reg_SS . . . . . . . . . . . .     000B         Word
  284.   file . . . . . . . . . . . . .     000D         Word
  285. SEMAPHORE  . . . . . . . . . . .     000A
  286.   precedent  . . . . . . . . . .     0000         Word
  287.   suivant  . . . . . . . . . . .     0002         Word
  288.   identite . . . . . . . . . . .     0004         Word
  289.   TypeObjet  . . . . . . . . . .     0006         Byte
  290.   etat . . . . . . . . . . . . .     0007         Byte
  291.   priorite . . . . . . . . . . .     0008         Byte
  292.   compteur . . . . . . . . . . .     0009         Byte
  293.  
  294.  
  295. Segments and Groups:
  296.  
  297.                 N a m e                 Size     Length   Align   Combine Class
  298.  
  299. DGROUP . . . . . . . . . . . . .    GROUP
  300. _DATA  . . . . . . . . . . . . .    16 Bit     002E      Word      Public  'DATA'    
  301. STACK  . . . . . . . . . . . . .    16 Bit     0400      Para      Stack      'STACK'     
  302. PilePrincipal  . . . . . . . . .    16 Bit     0000      Word      Public  'STACK'     
  303. _TEXT  . . . . . . . . . . . . .    16 Bit     0039      Word      Public  'CODE'    
  304.  
  305.  
  306. Procedures,  parameters and locals:
  307.  
  308.                 N a m e                 Type     Value    Attr
  309.  
  310. Noyau  . . . . . . . . . . . . .    P Near     0000      _TEXT    Length= 0039 Public
  311.   attente_fin  . . . . . . . . .    L Near     002F      _TEXT    
  312.  
  313.  
  314. Symbols:
  315.  
  316.                 N a m e                 Type     Value    Attr
  317.  
  318. @CodeSize  . . . . . . . . . . .    Number     0000h     
  319. @DataSize  . . . . . . . . . . .    Number     0000h     
  320. @Interface . . . . . . . . . . .    Number     0000h     
  321. @Model . . . . . . . . . . . . .    Number     0002h     
  322. @code  . . . . . . . . . . . . .    Text        _TEXT
  323. @data  . . . . . . . . . . . . .    Text        DGROUP
  324. @fardata?  . . . . . . . . . . .    Text        FAR_BSS
  325. @fardata . . . . . . . . . . . .    Text        FAR_DATA
  326. @stack . . . . . . . . . . . . .    Text        DGROUP
  327. ACTIF  . . . . . . . . . . . . .    Number     0001h     
  328. BLOQUE . . . . . . . . . . . . .    Number     0003h     
  329. Depiler  . . . . . . . . . . . .    L Near     0000      External
  330. DernierDeListe . . . . . . . . .    L Near     0000      External
  331. DimDescripteur . . . . . . . . .    Number     0009h     
  332. DimPile  . . . . . . . . . . . .    Number     0100h     
  333. ENCORE . . . . . . . . . . . . .    Number     0001h     
  334. EN_ATTENTE . . . . . . . . . . .    Number     0004h     
  335. EOI  . . . . . . . . . . . . . .    Number     0020h     
  336. ETAT_INITIAL . . . . . . . . . .    Number     F202h     
  337. EnCours  . . . . . . . . . . . .    Word     0000      _DATA    Public
  338. FIN  . . . . . . . . . . . . . .    Number     -0002h      
  339. FileVide . . . . . . . . . . . .    L Near     0000      External
  340. FinNoyau . . . . . . . . . . . .    Byte     002C      _DATA    Public
  341. INFINI . . . . . . . . . . . . .    Number     -0001h      
  342. InitVide . . . . . . . . . . . .    L Near     0000      External
  343. InsereItem . . . . . . . . . . .    L Near     0000      External
  344. LIBRE  . . . . . . . . . . . . .    Number     0000h     
  345. NIL  . . . . . . . . . . . . . .    Number     FFFFh     
  346. NON_EXISTANT . . . . . . . . . .    Number     0000h     
  347. NbRegs . . . . . . . . . . . . .    Number     000Ch     
  348. NonPreemptif . . . . . . . . . .    Byte     002B      _DATA    Public
  349. NoyauFini  . . . . . . . . . . .    Byte     002D      _DATA    Public
  350. OCCUPE . . . . . . . . . . . . .    Number     -0001h      
  351. PRET . . . . . . . . . . . . . .    Number     0002h     
  352. PortCTRLfdc  . . . . . . . . . .    Number     03F2h     
  353. PortCTRLpic  . . . . . . . . . .    Number     0020h     
  354. PremierDeListe . . . . . . . . .    L Near     0000      External
  355. P  . . . . . . . . . . . . . . .    L Near     0000      External
  356. QUEUE  . . . . . . . . . . . . .    Text        DESCRIPTEUR
  357. QueueExp . . . . . . . . . . . .    Word     0002      _DATA    Public
  358. SP_PilePrincipal . . . . . . . .    Word     0000      PilePrincipal    External
  359. SUSPENDU . . . . . . . . . . . .    Number     0005h     
  360. TERMINE  . . . . . . . . . . . .    Number     0000h     
  361. TableCentrale  . . . . . . . . .    Word     0000      _DATA    
  362. TableProcessus . . . . . . . . .    Word     0004      _DATA    
  363. TypeProcTPS  . . . . . . . . . .    Number     001Eh     
  364. TypeProcTPU  . . . . . . . . . .    Number     001Ch     
  365. TypeProcTRS  . . . . . . . . . .    Number     001Fh     
  366. TypeProcTRU  . . . . . . . . . .    Number     001Dh     
  367. TypeProcessus  . . . . . . . . .    Number     001Ch     
  368. TypeQueue  . . . . . . . . . . .    Number     000Ch     
  369. TypeSemaphore  . . . . . . . . .    Number     0003h     
  370. TypeTampon . . . . . . . . . . .    Number     0004h     
  371. V  . . . . . . . . . . . . . . .    L Near     0000      External
  372. dispatcher . . . . . . . . . . .    L Near     0000      External
  373. eligible . . . . . . . . . . . .    L Near     0000      External
  374. empiler  . . . . . . . . . . . .    L Near     0000      External
  375. extrait  . . . . . . . . . . . .    L Near     0000      External
  376. identification . . . . . . . . .    Text        WORD PTR identite
  377. insere . . . . . . . . . . . . .    L Near     0000      External
  378. nEtat  . . . . . . . . . . . . .    Number     0006h     
  379. pHorloge . . . . . . . . . . . .    PROCESSUS  0000        External
  380. pNoyau . . . . . . . . . . . . .    PROCESSUS  0004        _DATA    
  381. pPrincipal . . . . . . . . . . .    PROCESSUS  0013        _DATA    Public
  382. qe . . . . . . . . . . . . . . .    DESCRIPTEUR  0022     _DATA    
  383. recherche  . . . . . . . . . . .    L Near     0000      External
  384.  
  385.        0 Warnings
  386.        0 Errors
  387.