Retourner à la liste des fichiers

* NRDOS.MO5 version 3.5
* CMDP4.ASM (Commandes internes, quatrième partie)

************************************************************************************************************
* CD
* Exécute la commande CD.
************************************************************************************************************
CDBFSZ EQU   64               ; Taille du buffer pour récupérer le répertoire courant

CD     SET    *
       CLR    CSGDST          ; Central
       CLR    CSGNPG          ; Page 0
       LDB    #SYSFIC
       STB    CSGNTR
       LDB    CDISK
       STB    CSGNDK
       LDX    CLPTR
       LDA    CLTOGO
       JSR    SKPSPC
       BEQ    CDGO01

       CMPA   #2              ; Longueur 2 ?
       BNE    CDPATH

       LDB    1,X
       CMPB   #COLON
       BNE    CDPATH

       LDB    ,X
       SUBB   #AROB           ; Calcule le numéro de disque
       STB    CSGNDK          ; Change le disque courant

CDGO01 LDX    #CDTBUF
       STX    CSGNAD
       LDX    #CDBFSZ
       STX    CSGNSZ
       LDA    #GETDIR
       STA    CSGNTA
       JSR    XCNSGN          ; Récupère le répertoire courant sur le nouveau disque
       BNE    CDRTS

       LDB    CSGNDK          ; Affiche le nouveau chemin
       ADDB   #AROB
       JSR    PCHAR
       LDB    #COLON
       JSR    PCHAR
       LDX    #CDTBUF
       JSR    DSPSTR
       BRA    CDRTS

CDPATH CLR    A,X
       CMPA   #2
       BCS    CDGO02
       LDB    1,X
       CMPB   #COLON
       BNE    CDGO02
       LDB    ,X
       SUBB   #AROB           ; Calcule le numéro de disque
       STB    CSGNDK
       DECA
       DECA
       LEAX   2,X

CDGO02 EXG    A,B
       INCB
       CLRA
       STD    CSGNSZ
       STX    CSGNAD
       LDA    #SETDIR
       STA    CSGNTA
       JSR    XCNSGN

CDRTS  RTS

CDTBUF RMB    CDBFSZ,0

************************************************************************************************************
* UNKRT3
* Routine inutilisée et de fonction inconnue. Une fois entré dedans, on ne peut pas en sortir.
* Elle permet un dump hexadécimal des terminateurs de ligne et un déplacement au clavier.
************************************************************************************************************
UNKRT3 SET    *
       JSR    GETKEY
       CMPB   #CNTA
       BEQ    UK3LB1

       CMPB   #INS
       BNE    UK3LB2

       LDB    COLN
       PSHS   B
       LDB    RANG
       PSHS   B
       LDB    #US             ; Positionnement du curseur
       JSR    PCHAR
       PULS   B
       ORB    #$40
       JSR    PCHAR
       LDB    #$68
       JSR    PCHAR

UK3LP1 LDA    #$FF
       STA    COPCHR
       LDB    #RIGHT
       JSR    PCHAR
       LDB    #LEFT
       JSR    PCHAR
       LDB    #LEFT
       JSR    PCHAR
       LDB    COLN
       CMPB   ,S
       BCC    UK3LP1

       PULS   B
       LDB    #RIGHT
       JSR    PCHAR
       LDB    #SPACE
       JSR    PCHAR
       BRA    UNKRT3

UK3LB2 CMPB   #EFF
       BNE    UK3LB3

       LDA    #$FF
       STA    COPCHR
       LDB    #LEFT
       JSR    PCHAR
       CLR    COPCHR
       BRA    UNKRT3

UK3LB3 JSR    PCHAR
       BRA    UNKRT3

UK3LB1 LDX    #TERMIN
       LDA    #25             ; 25 octets
       JMP    HEXLIN          ; Affiche les terminateurs de ligne

************************************************************************************************************
* GETATT
* Récupère les attributs d'un fichier. Inutilisé.
************************************************************************************************************
GETATT SET    *
       JSR    BCFPT2
       JSR    PRSINT
       LBLS   PRMERR

       TFR    Y,D
       TSTA
       LBNE   PRMERR

       STB    CSGNDK
       LDB    #LIRATT
       STB    CSGNTA
       JSR    XCNSGN
       BNE    GARTS

       LDX    F2BFPT
       LDA    #128
       JSR    HEXLIN

GARTS  RTS

************************************************************************************************************
* SETATT
* Enregistre les attributs d'un fichier. Inutilisé.
************************************************************************************************************
SETATT SET    *
       JSR    BCFPT2
       JSR    PRSINT
       LBLS   PRMERR
       TFR    Y,D
       TSTA
       LBNE   PRMERR

       STB    CSGNDK
       LDB    #ECRATT
       STB    CSGNTA
       LDX    F2BFPT
       LDY    #CSGNFN
       LDA    #48

SALOOP LDB    ,X+
       STB    ,Y+
       DECA
       BNE    SALOOP

       JSR    XCNSGN
       RTS

************************************************************************************************************
* RDCBUF
* Lit le contenu du buffer commun. Inutilisé.
************************************************************************************************************
RDCBUF SET    *
       JSR    BCFPT2
       LDB    #RBUFF
       STB    CSGNTA
       JSR    XCNSGN
       RTS

************************************************************************************************************
* WRCBUF
* Ecrit le contenu du buffer commun. Inutilisé.
************************************************************************************************************
WRCBUF SET    *
       JSR    BCFPT2
       LDB    #WBUFF
       STB    CSGNTA
       LDX    F2BFPT
       LDY    #CSGNDK
       LDA    #30

WCBLP  LDB    ,X+
       STB    ,Y+
       DECA
       BNE    WCBLP

       JSR    XCNSGN
       RTS

Retourner à la liste des fichiers