User Tools

Site Tools


extcmd.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
extcmd.asm [2025/12/09 19:01] – fool-duplexextcmd.asm [2026/01/05 17:36] (current) – fool-duplex
Line 9: Line 9:
 ************************************************************************************************************ ************************************************************************************************************
 EXTCMD SET    * EXTCMD SET    *
-       LDX     #FNMBF1 +       LDX    #FNMBF1         ; Le nom à chercher se trouve là 
-       LDA     #9 +       LDA    #9              ; Longueur de la chaîne 
-       LDB     #QMARK+       LDB    #QMARK          ; On vérifie s'il y a des ? dans le nom de fichier
  
 ECLOOP DECA ECLOOP DECA
-       BEQ     ECFNOK+       BEQ    ECFNOK
  
-       CMPB    ,X+ +       CMPB   ,X+ 
-       BNE     ECLOOP+       BNE    ECLOOP
  
-       LDB     #135            ; NUMÉRO D'ERREUR +       LDB    #EAMBI          ; No. d'erreur "Nom de fichier ambigu" 
-       JMP     ERRMSG+       JMP    ERRMSG          ; Affiche le message et retourne
  
-ECFNOK LDX     CNSGN+11 +ECFNOK LDX    #CSGNDK         ; On copie le nom dans la consigne 
-       LDY     #FNMBF1 +       LDY    #FNMBF1 
-       LDA     #9 +       LDA    #9 
-       JSR     MEMCPY +       JSR    MEMCPY 
-       LDY     #MO5 +       LDY    #MO5            ; On rajoute le suffixe ".MO5" 
-       BSR     SEEKF +       BSR    SEEKF           ; Et on cherche le fichier 
-       BNE     ECNRD+       BNE    ECNRD
  
-       LDB     #CHBIN +       LDB    #CHBIN          ; Fichier trouvé, on lance l'exécution par une consigne CHBIN 
-       STB     CNSGN+3 +       STB    CSGNTA 
-       CLR     WORD_6425 +       CLR    CSGND2          ; Mode de chargement : exécution automatique 
-       LDX     #CNSGN +       LDX    #CNSGN 
-       JSR     RESEAU+       JSR    RESEAU          ; Appel au central
  
-ECWAIT JMP     ECWAIT          ; ATTENDS LA PRISE EN CHARGE PAR LE SERVEUR+ECWAIT JMP    ECWAIT          ; On attend jusqu'à ce que le fichier est téléchargé et exécuté
  
-ECNRD  LDY     #NRD +ECNRD  LDY    #NRD            ; Pas un .MO5, on essaye avec un .NRD 
-       BSR     SEEKF +       BSR    SEEKF 
-       BNE     ECFNE+       BNE    ECFNE
  
-       JSR     OPNNRD+       JSR    FOPENR          ; Il existe, on l'ouvre
        RTS        RTS
  
-ECFNE  LDX     #FILENE  +ECFNE  LDX    #FILENE         ; Sinon, "Fichier inexistant." 
-       JSR     DSPSTR+       JSR    DSPSTR          ; On affiche le message
        RTS        RTS
 +
 +************************************************************************************************************
 +* SEEKF
 +* Cherche un fichier dans le répertoire courant et pour les .MO5 et .TO7, cherche aussi sur la racine du
 +* disque système.
 +************************************************************************************************************
 +SEEKF  SET    *
 +       LDX    #CSGNFE         ; Copie le suffixe pointé par Y dans la consigne
 +       LDA    #3
 +       JSR    MEMCPY
 +       JSR    EXIST           ; Teste la présence du fichier
 +       BEQ    SFRTS           ; S'il existe, c'est super
 +
 +       LDB    #'O             ; O comme dans MO5 ou TO7
 +       CMPB   CSGNFE+1
 +       BNE    SFRTS           ; Seulement les fichiers .MO5 ou .TO7
 +
 +       LDB    CSGNDK          ; On va vérifier aussi sur A:\
 +       PSHS   B
 +       LDB    #1              ; Disque A:
 +       STB    CSGNDK
 +       LDX    #ROOT           ; "/"
 +       LBSR   SWIDIR          ; Change le répertoire vers A:\
 +       JSR    EXIST           ; Teste la présence du fichier
 +       PSHS   CC
 +       LBSR   RSTDIR          ; Restaure le répertoire courant
 +       PULS   CC
 +       PULS   B
 +       PSHS   CC
 +       STB    CSGNDK
 +       PULS   CC
 +SFRTS  RTS
 +
 +************************************************************************************************************
 +* EXIST
 +* Vérifie l'existence d'un fichier dans le répertoire courant.
 +************************************************************************************************************
 +EXIST  SET    *
 +       JSR    BCFPT1          ; Construit une consigne standard
 +       LDB    #CATP           ; Primitive de catalogue
 +       STB    CSGNTA
 +       LDX    #CNSGN
 +       JSR    RESEAU          ; Exécute la consigne
 +       LDX    #1
 +       CMPX   CRXT0           ; Résultat
 +       RTS
 +
 +MO5    FCC    /MO5/           ; Suffixe .MO5
 +TO7    FCC    /TO7/           ; Suffixe .TO7
 +NRD    FCC    /NRD/           ; Suffixe .NRD
 +
 +ROOT   FCS    %/%             ; Répertoire à chercher sur le disque système
 +
 +AUTOST FCB    $FF             ; Flag d'autostart (recherche et exécution de DEPART.NRD)
 +                              ; 0 = Ignorer DEPART.NRD
 +
 +FILENE FCB    CR, LF
 +       FCS    /Fichier inexistant./
 +
 +************************************************************************************************************
 +* SWIDIR
 +* Sauve le disque et répertoire courants puis continue sur CHGDIR pour changer de répertoire.
 +************************************************************************************************************
 +SWIDIR SET    *
 +       PSHS   X               ; On sauve X
 +       LDB    CSGNDK
 +       STB    SVDDSK          ; On sauve le numéro de disque dans SVDDSK
 +       LDX    #SVDPTH
 +       STX    CSGNAD
 +       LDX    #64             ; Taille maximum
 +       STX    CSGNSZ
 +       LDA    #GETDIR         ; Consigne GETDIR
 +       STA    CSGNTA
 +       LDX    #CNSGN
 +       JSR    RESEAU          ; On récupère le chemin courant dans SVDPTH
 +       PULS   X               ; On récupère X qui contient le pointeur vers le nouveau répertoire
 +
 +************************************************************************************************************
 +* CHGDIR
 +* Change de répertoire.
 +************************************************************************************************************
 +CHGDIR SET    *
 +       STX    CSGNAD
 +       LDB    SVDDSK
 +       STB    CSGNDK
 +       LDA    #SETDIR         ; Consigne SETDIR
 +       STA    CSGNTA
 +       LDX    #CNSGN
 +       JSR    RESEAU          ; On change de répertoire
 +       LDA    #0
 +       STA    CDSUCS          ; Flag de succès
 +       LDA    CRERR
 +       CMPA   #0
 +       BEQ    CHDRTS
 +
 +       LDA    #$FF
 +       STA    CDSUCS
 +CHDRTS RTS
 +
 +************************************************************************************************************
 +* RSTDIR
 +* Restaure le disque et répertoire qui avait été sauvés dans SVDDSK et SVDPTH.
 +************************************************************************************************************
 +RSTDIR SET    *
 +       LDX    #SVDPTH
 +       STX    CSGNAD
 +       LDB    SVDDSK
 +       STB    CSGNDK
 +       LDX    #64             ; Taille maximum
 +       STX    CSGNSZ
 +       LDA    #SETDIR         ; Consigne SETDIR
 +       STA    CSGNTA
 +       LDX    #CNSGN
 +       JSR    RESEAU          ; Change de répertoire
 +       RTS
 +
 +SVDDSK RMB    1               ; Numéro de disque à conserver
 +SVDPTH RMB    65              ; Chemin à conserver
 +
 </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]]
 +
extcmd.asm.1765303297.txt.gz · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki