User Tools

Site Tools


lookup.asm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
lookup.asm [2025/12/11 11:25] – fool-duplexlookup.asm [2025/12/29 18:22] (current) – fool-duplex
Line 4: Line 4:
 * LOOKUP.ASM (Recherche d'une commande interne) * LOOKUP.ASM (Recherche d'une commande interne)
  
 +************************************************************************************************************
 +* SKSPCL
 +* Saute les séparateurs consécutifs pour se positionner au début du prochain atome
 ************************************************************************************************************ ************************************************************************************************************
 SKSPCL SET    *                SKSPCL SET    *               
Line 13: Line 16:
        RTS                            RTS                    
                                                              
-                              +************************************************************************************************************ 
 +* RSTTOK 
 +* Revient sur la position de l'atome sauvegardé 
 +************************************************************************************************************
 RSTTOK SET    *                RSTTOK SET    *               
        LEAX   SVDTOK,PCR          LEAX   SVDTOK,PCR  
Line 21: Line 27:
        RTS                            RTS                    
                                                              
-                              +************************************************************************************************************ 
 +* LOOKUP 
 +* Recherche dans la table pointée par Y l'adresse d'exécution correspondant à l'atome pointé par X. 
 +************************************************************************************************************
 LOOKUP SET    *                LOOKUP SET    *               
        LDB    ,Y+             ; Taille de la table        LDB    ,Y+             ; Taille de la table
        PSHS   Y                      PSHS   Y              
        PSHS   B                      PSHS   B              
-       ASLB                    ; *2 +       ASLB                   ; *2 
-       LEAY   B,Y             ; Y pointe sur la liste des mots clefs+       LEAY   B,Y             ; Y pointe à la fin de la table
                                                              
-LKLOOP:                        +LKLOOP BSR    MTCHKW          ; Vérifie le mot clé courant         
-       BSR    MTCHKW          +       BEQ    LKFND           ; On a une correspondance 
-       BEQ    LKFND          +       
        DEC    ,S                     DEC    ,S             
-       BNE    LKLOOP         +       BNE    LKLOOP          ; Sinon, on remonte jusqu'au premier mot clé dans la table  
 +       
        ANDCC  #$FB                   ANDCC  #$FB           
-       BRA    LKEND          +       BRA    LKEND           ; On n'a pas trouvé
                                                              
-LKFND:                         +LKFND  LDY    1,S             ; On récupère l'offset correspondant     
-       LDY    1,S            +
        LDB    -1,Y                   LDB    -1,Y           
        SUBB   ,S                     SUBB   ,S             
        ASLB                           ASLB                   
        LDD    B,Y                    LDD    B,Y            
-       LEAX   START,PCR   +       LEAX   IMPLNT,PCR      ; Et on calcule l'adresse effective de la routine correspondante
        LEAX   D,X                    LEAX   D,X            
        ORCC   #4                     ORCC   #4             
                                                              
-LKEND:                         +LKEND  LEAS   3,S            
-       LEAS   3,S            +
        RTS                            RTS                    
                                                              
-                              +************************************************************************************************************ 
 +* MTCHKW 
 +* Compare l'atome fourni avec un mot clé. Y pointe sur le mot-clé, X sur l'atome. 
 +************************************************************************************************************
 MTCHKW SET    *                MTCHKW SET    *               
        PSHS   X                      PSHS   X              
-       LDA    #8             +       LDA    #8              ; Seuls les 8 premiers caractères comptent
                                                              
-MKLOOP:                        +MKLOOP TSTA                   
-       TSTA                   +
        BEQ    MKSKIP                 BEQ    MKSKIP         
 +       
        LDB    ,Y                     LDB    ,Y             
-       ANDB   #$7F           +       ANDB   #$7F            ; Le bit 7 doit être enlevé pour la comparaison
        CMPB   ,X+                    CMPB   ,X+            
        BNE    MKSKIP                 BNE    MKSKIP         
 +       
        DECA                           DECA                   
        LDB    ,Y+                    LDB    ,Y+            
        BPL    MKLOOP                 BPL    MKLOOP         
 +       
        TSTA                           TSTA                   
        BEQ    MKEND1                 BEQ    MKEND1         
 +       
        LDB    ,X                     LDB    ,X             
-       CMPB   #SPACE     +       CMPB   #SPACE          ; Début de la table
        BNE    MKEND2                 BNE    MKEND2         
                                                              
-MKEND1:                       +MKEND1 PULS   PC,X           
-       PULS   PC,X           +
                                                              
-MKSKIP:                        +MKSKIP LDB    ,Y+             ; Ce n'est pas le bon mot-clé 
-       LDB    ,Y+             +       BPL    MKSKIP          ; On saute le reste des caractères
-       BPL    MKSKIP+
                                                              
-MKEND2:                        +MKEND2 PULS   PC,X           
-       PULS   PC,X           +
 </code> </code>
 [[code_source_de_nrdos.mo5_version_3.5|Retourner à la liste des fichiers]] [[code_source_de_nrdos.mo5_version_3.5|Retourner à la liste des fichiers]]
lookup.asm.1765448725.txt.gz · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki