User Tools

Site Tools


main.asm

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

Retourner à la liste des fichiers

main.asm.txt · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki