User Tools

Site Tools


cmdp2.asm

This is an old revision of the document!


Retourner à la liste des fichiers

* NRDOS.MO5 version 3.5
* CMDP2.ASM (Commandes internes, deuxième partie)

************************************************************************************************************
* DRV
* Change le disque courant (commande x: ou x est le disque)
************************************************************************************************************
DRV    SET    *
       LDX    TKOFST
       LDB    CMDBUF,X
       CMPB   #'A             ; Le disque doit être entre A: ...
       BCS    CDERR

       CMPB   #'J             ; ... et J:
       BHI    CDERR

       LDB    FNMBF1
       PSHS   B
       LDD    DSKMAP          

CDLOOP LSRA                   ; On vérifie que le disque est valide
       RORB
       DEC    ,S
       BNE    CDLOOP

       PULS   B
       BCS    CDOK

CDERR  LDB    #EDQER          ; Code d'erreur "Disque erroné"
       JSR    ERRMSG          ; On affiche le message
       BRA    CDEND

CDOK   LDB    FNMBF1
       STB    CDISK           ; On change le disque courant

CDEND  RTS

DSKMAP FDB    0

************************************************************************************************************
* IDC
* Exécute la commande ID (fixe l'identifiant du poste)
************************************************************************************************************
IDC    SET    *
       LEAY   FNMBF2,PCR
       LDX    CLPTR,PCR
       LDA    CLTOGO,PCR
       LBSR   SKPSPC
       LBSR   PRSPTH          ; On vérifie l'atome
       STA    CLTOGO,PCR
       STX    CLPTR,PCR
       LDA    #8              ; Seuls les 8 premiers caractères comptent
       LEAY   IDBUFF,PCR
       LEAX   CSGNDK,PCR
       LBSR   MEMCPY
       LDA    #0           
       STA    CSGDST,PCR
       LDA    #ID             ; Consigne ID
       STA    CSGNTA,PCR
       LDA    #SYSFIC
       STA    CSGNTR,PCR
       LBSR   XCNSGN          ; On exécute la consigne
       RTS

************************************************************************************************************
* TIME
* Exécute la commande TIME (affiche la date et l'heure)
************************************************************************************************************
TIME   SET    *
       LDA    #0           
       STA    CSGNOP,PCR
       LDA    #DATE           ; Consigne DATE
       STA    CSGNTA,PCR
       LDA    #SYSFIC
       STA    CSGNTR,PCR
       LBSR   XCNSGN          ; On exécute la consigne
       BNE    TIMEND

       LEAX   DATEST,PCR      ; On affiche
       LBSR   DSPSTR          
       LEAX   CRXT0,PCR
       BSR    D3NBS           ; Les trois nombres qui composent la date
       LEAX   TIMEST,PCR
       LBSR   DSPSTR
       LEAX   CRXT3,PCR
       BSR    D3NBS           ; Les trois nombres qui composent l'heure
TIMEND RTS

************************************************************************************************************
* D3NBS
* Affiche trois nombres entiers 8 bits séparés par des espaces
************************************************************************************************************
D3NBS  SET    *
       LDB    #3              ; Trois fois
       PSHS   B

D3LOOP LDB    ,X+             ; Le nombre sur 8 bits est pointé par X
       PSHS   X
       LBSR   DINT            ; Conversion décimale et affichage
       PULS   X
       LBSR   DSPACE          ; Affiche une espace
       DEC    ,S
       BNE    D3LOOP

       PULS   PC,B

DATEST FCS    /DATE  : /      ; Chaînes de caractères pour l'affichage
TIMEST FCS    / - HEURE : /   ; de la date et de l'heure

************************************************************************************************************
* ERA
* Exécute la commande ERA ou DEL (effacement de fichier)
************************************************************************************************************
ERA    SET    *              
       LBSR   SETCTX          ; Prépare le contexte (paramètres de la commande, changement de répertoire)
       LDB    #$FF          
       CMPB   CDSUCS          ; Le chemin est-il valide ?
       BNE    ERAOK         
                             
       LBSR   PRMERR          ; Erreur de paramètre
       BRA    ERAEND        
                             
ERAOK  LDA    #SUPFI          ; Consigne SUPFI
       STA    CSGNTA,PCR
       LBSR   XCNSGN          ; On exécute la consigne
ERAEND LBSR   RSTDIR          ; et on rétablit le répertoire courant
       RTS                                         

Retourner à la liste des fichiers

cmdp2.asm.1767451525.txt.gz · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki