User Tools

Site Tools


lookup.asm

Differences

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

Link to this comparison view

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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki