User Tools

Site Tools


code_source_de_menu.mo5

This is an old revision of the document!


Code source de NRDOS.MO5 v3.5

* NRDOS.MO5 version 3.5

IMPLNT EQU    $5000

RESET  EQU    $FFFE
PG0APP EQU    $2100
STACK  EQU    $2200
ENDRAM EQU    $A000
IRQRE  EQU    $A041
IRQPT  EQU    $2064
SYSPRA EQU    $A7C0
NUPOST EQU    $A7D8
EXT64  EQU    $A7CB
NUPO   EQU    $2052
RELACH EQU    $A02B
RESEAU EQU    $A025
M5VCT  EQU    $EFFE
ADCNTC EQU    $1FFE
ADCRDU EQU    $1FF4
ADTRCR EQU    $1FFA

TEMPO  EQU    $2039
DUREE  EQU    $203B
TIMBRE EQU    $203D
OCTAVE EQU    $203E

KTSTH  EQU    $0A
JPUTCH EQU    $82
JNOTEH EQU    $9E

CLEAR  EQU    $38
SYSINF EQU    $31

CR     EQU    $0D
LF     EQU    $0A
SPACE  EQU    $20
HYPHN  EQU    '-
SUP    EQU    '>
AROB   EQU    '@


       ORG    IMPLNT
       
INIT   SET    *       
       ORCC   #$FF            ; Masquage interruptions
       LDA    #$0C            ; Commutation page 0 de l'extension RAM 64 Ko
       STA    EXT64
       LDX    #START          ; Teste de présence de l'extension RAM 64 Ko
       STX    M5VCT
       CMPX   M5VCT
       BNE    START           ; Pas d'extension, on continue
       JMP    [RESET]         ; Si l'extension 64 Ko est présente, reset propre       

       
START  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 existe
       BNE    PROMPT
       JSR    OPNDEP          ; Oui, alors on ouvre "DEPART.NRD" et on passe en mode exécution automatique

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   TOKCNT
       BEQ    PROMPT         ; La ligne était vide
       
       LDX    #CMDBUF      
       LDA    #0             ; Calcule la longueur de la ligne de commande
PRLP01 LDB    ,X+
       CMPB   #CR
       BEQ    PARSE
       INCA
       BRA    PRLP01

PARSE  SET    *

       (TO BE CONTINUED ...)
       
ENDPRG EQU    *               ; MENU.MO5 se termine en $7357
code_source_de_menu.mo5.1765105422.txt.gz · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki