cmdp2.asm
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 CSGDST,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
cmdp2.asm.txt · Last modified: by fool-duplex
