[[code_source_de_nrdos.mo5_version_3.5|Retourner à la liste des fichiers]] * NRDOS.MO5 version 3.5 * MAIN.ASM (Programme principal) IMPLNT EQU $5000 INCLUD EQUATES.ASM ORG IMPLNT * Point d'entrée de l'application NRDOS.MO5 * Initialisation du poste START SET * ORCC #$FF ; Masquage interruptions LDA #$0C ; Commutation page 0 de l'extension RAM 64 Ko STA EXT64K LDX #INIT ; Teste de présence de l'extension RAM 64 Ko STX M5VCT CMPX M5VCT BNE INIT ; Pas d'extension, on continue JMP [RESET] ; Si l'extension 64 Ko est présente, reset propre * Initialisation du réseau et de l'application INIT SET * CLR EXT64K ; Commutation BASIC résident LDX #INITST JSR DSPSTR ; Efface l'écran, bleu sur bleu ciel ORCC #$FF ; Pas d'interruptions LDX #PG0APP ; On efface la RAM de $2100 à $4FFF CLMLP1 CLR ,X+ CMPX #IMPLNT BCS CLMLP1 LDX #ENDPRG ; ... et de $7357 à $9FFF CLMLP2 CLR ,X+ CMPX #ENDRAM BCS CLMLP2 LDS #STACK ; Pile en $2200 LDX #IRQRE ; On installe l'interruption réseau STX IRQPT LDA NUPOST ; On charge le numéro de poste ANDA #$1F STA NUPO JSR RELACH ; et on initialise le réseau. JSR MEMFRM ; On passe en mémoire vidéo forme (qui contient les variables réseau) LDX #CNTRT STX ADCNTC ; On installe la routine de gestion du CNT-C réseau LDX #CRBUFF STX ADCRDU ; On spécifie la zone de compte-rendu LDX #TRCRRT STX ADTRCR ; On installe la routine de gestion de CTR inconnu LEAX WLCMST,PCR LBSR DSPSTR ; On affiche le message de bienvenue "NRDOS - Version 3.5 - 05 11 86" LDA AUTOST ; Flag d'autostart (appel de DEPART.NRD) BEQ PROMPT ; Si AUTOST=0, on ne cherche pas DEPART.NRD CLR AUTOST LDA #0 ; Préparation consigne CLEAR STA CNSGN+1 LDA #SYSFIC STA CNSGN+2 LDA #CLEAR STA CNSGN+3 LDX #CNSGN JSR RESEAU ; On efface le descripteur de poste LDA #SYSINF ; Préparation consigne SYSINF STA CNSGN+3 JSR RESEAU ; On demande les caractéristiques du système LDD CRBUFF+5 STD DSKMAP ; On conserve la liste des disques valides (0=invalide) LDY #NRD ; "NRD" JSR SEEKF ; On vérifie si le fichier DEPART.NRD existe BNE PROMPT JSR FOPENR ; Oui, alors on ouvre DEPART.NRD et on passe en mode exécution automatique * Boucle principale de la ligne de commande (prompt) PROMPT SET * LBSR DCRLF ; Retour à la ligne LDB CDISK,PCR ; Le disque courant entre 1 et 10 ADDB #AROB LBSR PCHAR ; Affiche le disque courant (ex: 'A') LDB #SUP LBSR PCHAR ; Affiche '>' LBSR INPUT ; Recupère une ligne de commande au clavier ou depuis un script LDA #0 CMPA TOKNB BEQ PROMPT ; La ligne était vide LDX #CMDBUF ; Calcule la longueur de la ligne de commande LDA #0 PRLP01 LDB ,X+ CMPB #CR BEQ PARSE INCA ; A contiendra la longueur BRA PRLP01 PARSE SET * LDX #CMDBUF ; Entrée: X doit pointer sur la ligne de commande LEAY FNMBF1,PCR ; Sortie: Y doit pointer sur le premier atome décodé LBSR PRSPTH ; Décodage d'un chemin STA CLTOGO,PCR ; Sauve le nombre de caractères restant à décoder dans la ligne de commande STX CLPTR,PCR ; Sauve le pointeur courant dans la ligne de commande LEAX FNAME1,PCR ; Entrée: X doit pointer sur la commande à tester LEAY CMDTBL,PCR ; Table des commandes : 21 commandes à ce jour LBSR LOOKUP ; Recherche d'une possible commande interne BEQ INTCMD ; On a trouvé une commande interne qui correspond LBSR FCLOSE ; Ferme le fichier ouvert courant JSR EXTCMD ; Cherche une commande externe (application, script, ...) et l'exécute BRA PROMPT ; On retourne au prompt INTCMD SET * LBSR DCRLF ; On retourne à la ligne LEAY PROMPT,PCR ; Saut dans le futur au prompt PSHS Y JMP ,X ; Exécute l'instruction interne et retourne au prompt * Chaîne permettant l'effacement de l'écran INITST SET * FCB US, $20+0, $20+0, US, $10+2, $10+4 ; CONSOLE 0,24 FCB ESC, $40+BLUE, ESC, $50+CYAN, ESC, $60+CYAN ; SCREEN 4,6,6 FCB FF ; CLS FCB 0 * Message de bienvenue WLCMST SET * FCB DC1 ; Allumage curseur FCC /NRDOS - Version 3.5 - 05 11 86/ FCB CR, LF ; Retour à la ligne FCB 0 CLTOGO RMB 1,0 ; Nombre de caractères restant à traiter dans la ligne de commande CLPTR RMB 2,0 ; Pointeur à la position courante dans la ligne de commande * Buffer de nom de fichier (1) FNMBF1 RMB 1,0 ; Numéro de disque FNAME1 RMB 8,0 ; Nom du fichier RMB 3,0 ; Extension du fichier * Buffer de nom de fichier (2) FNMBF2 RMB 1,0 ; Numéro de disque IDBUFF RMB 8,0 ; Nom du fichier RMB 3,0 ; Extension du fichier * Buffer de nom de fichier (3) FNMBF3 RMB 1,0 ; Numéro de disque RMB 8,0 ; Nom du fichier RMB 3,0 ; Extension du fichier CDISK FCB $01 ; Disque courant, par défaut A: INCLUD CMDTBL.ASM INCLUD PARSER.ASM INCLUD CMDP1.ASM INCLUD EXTCMD.ASM INCLUD NRSVC.ASM INCLUD LOOKUP.ASM INCLUD CMDP2.ASM INCLUD FILES.ASM INCLUD CMDP3.ASM INCLUD ERRORS.ASM INCLUD LIBMO5.ASM INCLUD CMDP4.ASM INCLUD UTILS.ASM INCLUD GBLVARS.ASM ENDPRG EQU * ; NRDOS.MO5 se termine en $7357 END START [[code_source_de_nrdos.mo5_version_3.5|Retourner à la liste des fichiers]]