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
************************************************************************************************************
* ID
* Exécute la commande 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
* Exécute la commande 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 ; On affiche
LBSR DSPSTR
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
************************************************************************************************************
* ERA
* Exécute la commande ERA ou DEL (Effacement de fichier)
************************************************************************************************************
ERA SET *
LBSR SETCTX
LDB #$FF
CMPB CDSUCS
BNE ERAOK
LBSR PRMERR
BRA ERAEND
ERAOK LDA #SUPFI
STA CSGNTA-*-4,PC
LBSR XCNSGN
ERAEND LBSR RSTDIR
RTS
************************************************************************************************************
* OPNNRD
* Ouvre un fichier NRD en lecture
************************************************************************************************************
OPNNRD SET *
LDA #OUVFL
STA CSGNTA-*-4,PC
LBSR XCNSGN ; Ouvre le fichier en lecture seule
BNE ONEND
LDA CRBUFF+1,PC
STA FNHNDL-*-4,PC
LDA #FBFSIZ
STA BUFPOS-*-4,PC
LDD #0
STD FP242-*-4,PC
STA FP240-*-4,PC
STA FRERR-*-4,PC
LDA #$FF
STA FOFLG-*-4,PC
ONEND RTS
FNHNDL FCB 0
FOFLG FCB 0
BUFPOS FCB FBFSIZ
FP242 FCB 0
FP241 FCB 0
FP240 FCB 0
BREAD FCB 0
FRERR FCB 0
FBUFFR RMB FBFSIZ
************************************************************************************************************
* FCLOSE
* Ferme le fichier courant
************************************************************************************************************
FCLOSE SET *
TST FOFLG-*-4,PC
BEQ FCEND
LDA #0 ; Central
STA CSGNOP-*-4,PC
LDA #SYSFIC
STA CSGNTR-*-4,PC
LDA FNHNDL
STA CSGNDK-*-4,PC
LDA #FERFI
STA CSGNTA-*-4,PC
LEAX CNSGN-*-4,PC
JSR RESEAU
CLR FOFLG-*-4,PC
LDA #$FF
STA FNHNDL-*-4,PC
FCEND RTS
************************************************************************************************************
* FGETCH
* Lit un caractère depuis un fichier en ignorant les LF
************************************************************************************************************
FGETCH TST FOFLG-*-4,PC
BNE FGREAD
RTS
FGREAD BSR FREAD
CMPB #LF ; Ignorer les LF
BEQ FGREAD
RTS
cmdp2.asm.1765474715.txt.gz · Last modified: by fool-duplex
