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
************************************************************************************************************
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

************************************************************************************************************
* ID
* Fixe l'identifiant du poste
************************************************************************************************************
ID     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    CSGNOP,PCR
       LDA    #ID             ; Consigne ID
       STA    CSGNTA,PCR
       LDA    #SYSFIC
       STA    CSGNTR,PCR
       LBSR   XCNSGN          ; On exécute la consigne
       RTS

************************************************************************************************************
* DATE
* Affiche la date et l'heure
************************************************************************************************************
DATE   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    DATEND

       LEAX   DATEST,PCR
       LBSR   DSPSTR          ; On affiche
       LEAX   CRBUFF+2,PC
       BSR    D3NBS           ; Les trois nombres qui composent la date
       LEAX   TIMEST,PCR
       LBSR   DSPSTR
       LEAX   CRBUFF+5,PC
       BSR    D3NBS           ; Les trois nombres qui composent l'heure
DATEND 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

Retourner à la liste des fichiers

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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki