User Tools

Site Tools


parser.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
parser.asm [2025/12/08 17:46] – fool-duplexparser.asm [2026/01/05 15:59] (current) – fool-duplex
Line 1: Line 1:
-[[code_source_de_menu.mo5|Retourner à la liste des fichiers]]+[[code_source_de_nrdos.mo5_version_3.5|Retourner à la liste des fichiers]]
  
 <code>* NRDOS.MO5 version 3.5 <code>* NRDOS.MO5 version 3.5
 * PARSER.ASM (Décodage de la ligne de commande) * PARSER.ASM (Décodage de la ligne de commande)
  
-**************************************************************************************************************+************************************************************************************************************
 * INPUT * INPUT
 * Cette routine récupère une ligne de commande de 80 caractères maximum soit en direct, soit depuis un  * Cette routine récupère une ligne de commande de 80 caractères maximum soit en direct, soit depuis un 
Line 10: Line 10:
 * des atomes (séparés par espace ou tabulation). Une ligne de commande se termine toujours par CR.  * des atomes (séparés par espace ou tabulation). Une ligne de commande se termine toujours par CR. 
 * LF est ignoré. * LF est ignoré.
-**************************************************************************************************************+************************************************************************************************************
 INPUT  SET    *        INPUT  SET    *       
        LBSR   GETLN           ; Lit une ligne de 80 caractères max.        LBSR   GETLN           ; Lit une ligne de 80 caractères max.
Line 17: Line 17:
        RTS        RTS
                
-**************************************************************************************************************       +************************************************************************************************************
 * GETLN * GETLN
 * Cette routine lit une ligne de 80 caractères maximum depuis le clavier ou depuis un fichier.   * Cette routine lit une ligne de 80 caractères maximum depuis le clavier ou depuis un fichier.  
 * Depuis un fichier, LF est ignoré. En mode direct, les flèches gauche, droite, haut, bas, ainsi que les * Depuis un fichier, LF est ignoré. En mode direct, les flèches gauche, droite, haut, bas, ainsi que les
 * touches INS, EFF sont gérées. ENTREE (CR) termine la ligne.       * touches INS, EFF sont gérées. ENTREE (CR) termine la ligne.      
-**************************************************************************************************************+************************************************************************************************************
 GETLN  SET    *        GETLN  SET    *       
        LDA    #0        LDA    #0
Line 186: Line 186:
  
 INSFLG FCB    0              ; Flag de mode insertion INSFLG FCB    0              ; Flag de mode insertion
-CLCOPY RMB    81             ; Buffer de copie et précédente ligne de commande +CLCOPY RMB    81,0           ; Buffer de copie et précédente ligne de commande 
-CMDBUF RMB    81             ; Buffer de ligne de commande+CMDBUF RMB    81,0           ; Buffer de ligne de commande
  
-**************************************************************************************************************+************************************************************************************************************
 * CNTTOK * CNTTOK
 * Parcours le buffer de ligne de commande à la recherche de séparateurs. A chaque séparateur trouvé, la * Parcours le buffer de ligne de commande à la recherche de séparateurs. A chaque séparateur trouvé, la
 * position courante est rangée dans la table des atomes. Une succession de séparateurs compte comme un seul. * position courante est rangée dans la table des atomes. Une succession de séparateurs compte comme un seul.
-**************************************************************************************************************+************************************************************************************************************
 CNTTOK SET    * CNTTOK SET    *
        CLR    TOKNB          ; Nombre d'atome à zéro        CLR    TOKNB          ; Nombre d'atome à zéro
Line 217: Line 217:
        LDA    TOKNB          ; Numéro courant d'atome        LDA    TOKNB          ; Numéro courant d'atome
        ASLA                  ; Multiplié par 2        ASLA                  ; Multiplié par 2
-       LDY    #TKOFSTB       ; On range la position courante dans la ligne  +       LDY    #TKOFST        ; On range la position courante dans la ligne  
        STX    A,Y            ; de commande dans la table d'atomes        STX    A,Y            ; de commande dans la table d'atomes
        INC    TOKNB          ; Atome suivant        INC    TOKNB          ; Atome suivant
Line 223: Line 223:
 CTIGNS LDB    CMDBUF,X       ; On saute les éventuels séparateurs successifs CTIGNS LDB    CMDBUF,X       ; On saute les éventuels séparateurs successifs
        LBSR   SPTBCR        LBSR   SPTBCR
-       BEQ    LOC_53C0+       BEQ    CTENDL
  
        LEAX   1,X            ; Position suivante        LEAX   1,X            ; Position suivante
Line 233: Line 233:
        RTS        RTS
  
-TOKNB  RMB    1              ; Nombre d'atomes +TOKNB  RMB    1,0            ; Nombre d'atomes 
-TKOFST RMB    32             ; Table des atomes (maximum 16)+TKOFST SET    *              ; Table des atomes (maximum 16) 
 +TKOFS1 RMB    2,0 
 +TKOFS2 RMB    2,0 
 +TKOFS3 RMB    2,0 
 +TKOFS4 RMB    2,0              
 +TKMOFS RMB    24,0
  
-**************************************************************************************************************+************************************************************************************************************
 * SPTBCR * SPTBCR
 * Teste le caractère pointé comme espace, tabulation ou retour chariot. * Teste le caractère pointé comme espace, tabulation ou retour chariot.
-**************************************************************************************************************+************************************************************************************************************
 SPTBCR SET    * SPTBCR SET    *
        CMPB   #SPACE         ; Espace ?        CMPB   #SPACE         ; Espace ?
Line 249: Line 254:
 SPTEND RTS SPTEND RTS
  
 +************************************************************************************************************
 +* TOUP
 +* Convertit la ligne de commande en majuscules
 +************************************************************************************************************
 +TOUP   SET    *
 +       LDX    #0
  
 +TULOOP LDB    CMDBUF,X
 +       CMPB   #CR            ; Jusqu'à la fin de la ligne
 +       BEQ    TUEND
  
-       (To be continued ...)+       LBSR   UPCASE 
 +       STB    CMDBUF,X 
 +       LEAX   1,X 
 +       BRA    TULOOP 
 + 
 +TUEND  RTS 
 + 
 +************************************************************************************************************ 
 +* DISPBS 
 +* Efface le dernier caractère à l'écran 
 +************************************************************************************************************ 
 +DISPBS SET    * 
 +       LDB    #LEFT 
 +       LBSR   PCHAR          ; Reviens en arrière 
 +       LDB    #SPACE 
 +       LBSR   PCHAR          ; Efface le caractère 
 +       LDB    #LEFT 
 +       LBSR   PCHAR          ; Reviens en arrière 
 +       RTS
 </code> </code>
 +
 +[[code_source_de_nrdos.mo5_version_3.5|Retourner à la liste des fichiers]]
parser.asm.1765212408.txt.gz · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki