User Tools

Site Tools


menu_de_demarrage

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
menu_de_demarrage [2019/06/28 10:25] fool-duplexmenu_de_demarrage [2023/05/27 13:22] (current) fool-duplex
Line 1: Line 1:
 Les menus de démarrage MENU.MO5 et MENU.TO7 sont envoyés par le serveur lors de l'initialisation d'un poste et affichent le menu permettant de sélectionner une application. Les menus de démarrage MENU.MO5 et MENU.TO7 sont envoyés par le serveur lors de l'initialisation d'un poste et affichent le menu permettant de sélectionner une application.
  
-<code>; MENU.MO5 version 3.1+Disquette de développement : {{ :menu.fd |menu.fd}}
  
-RESET  EQU    $FFFE +  * [[Code source de MENU.MO5 v3.2|Code source de MENU.MO5]] 
-BEGRAM EQU    $2100 +  * [[Code source de MENU.TO7 v3.2|Code source de MENU.TO7]] 
-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 
- 
-SIZITM  EQU 44 
-SIZFIL  EQU 12 
- 
-CR      EQU $0D 
-LF      EQU $0A 
-SPACE   EQU $20 
-HYPHN   EQU '- 
- 
-        ORG $5000 
- 
-START   JMP MAIN 
- 
-; Table des entrees de menu 
-NBITM   FCB $04             ; 4 elements dans le menu 
- 
-ELEM1   FCC /BASIC/         ; Titre 1 (32 octets max) 
-        ; Complete par des $00         
-OFEL1   FCB $01             ; Disque source 
-FILE1   FCC /BASIC   MO5/   ; Fichier correspondant, 11 caractères                         
- 
-ELEM2   FCC /LOGO/          ; Titre 2 (32 octets max) 
-        ; Complete par des $00         
-        FCB $01             ; Disque source 
-FILE2   FCC /LOGO    MO5/   ; Fichier correspondant, 11 caractères                         
- 
-ELEM3   FCC /LSE/           ; Titre 3 (32 octets max) 
-        ; Complete par des $00         
-        FCB $01             ; Disque source 
-FILE3   FCC /LSE     MO5/   ; Fichier correspondant, 11 caractères                         
- 
-ELEM4   FCC /NRDOS/         ; Titre 4 (32 octets max) 
-        ; Complete par des $00         
-        FCB $01             ; Disque source 
-FILE4   FCC /NRDOS   MO5/   ; Fichier correspondant, 11 caractères                         
- 
-; complete par des $00 
-; Maximum 20 elements, 1 element = 44 octets, soit 880 octets  
- 
-;       ORG $5374 
-      
-MAIN    EQU *         
-        ORCC   #$FF         ; Pas d'interruptions             
-        LDA    #$0C         ; Preparation reboot a chaud                   
-        STA    EXT64               
-        LDX    #EXTOK              
-        STX    M5VCT               
-        CMPX   M5VCT               
-        BNE    EXTOK        ; Saut simple au menu          
-        JMP    [RESET]      ; Reboot et saut au menu 
- 
-EXTOK   EQU *             
-        CLR    EXT64        ; BASIC visible               
-        LDX    #MSG1        ; Affiche entete        
-        JSR    DISPL             
-        ORCC   #$FF         ; Pas d'interruptions 
-                     
-        LDX    #$BEGRAM              
-ZMEM1   EQU *               ; Efface la memoire de $2100 à $5002 
-        CLR    ,X+                 
-        CMPX   #NBITM-1              
-        BCS    ZMEM1  
-              
-        LDX    #ENDPRG              
-ZMEM2   EQU *               ; Efface la memoire de $563D à $A000 
-        CLR    ,X+                 
-        CMPX   #ENDRAM             
-        BCS    ZMEM2    
-            
-        LDS    #BEGRAM+$100 ; Fixe la pile en $2200              
-        LDX    #IRQRE       ; Fixe le vecteur IRQ du NR         
-        STX    IRQPT 
-        LDA    NUPOST       ; Lit no de poste               
-        ANDA   #$1F         ; de 0 à 31                
-        STA    NUPO         ; et le stocke               
-        JSR    RELACH       ; Libere la ligne               
-        JSR    FORM         ; Acces aux variables NR dans la video               
-        LDX    #MAIN              
-        STX    ADCTRLC      ; Reprise en main apres un CTRL-C          
-        LDX    #CPTRD              
-        STX    ADCRDU       ; Zone de compte-rendu               
-        LDX    #INCON              
-        STX    ADTRCTR      ; Routine de traitement code inconnu               
-        LDX    #MSG1B              
-        JSR    DISPL              
-        LDB    NUPOST       ; Lit numero de poste               
-        ANDB   #$1F         ; de 0 à 31         
-        CLRA                       
-        JSR    DISPO        ; Affiche numero de poste               
-        LDX    #MSG2        ; Affiche "MENU"         
-        JSR    DISPL               
- 
-        LDB    #&24         ; Calcule le nb de lignes                
-        SUBB   NBITM        ; vides à sauter         
-        LSRB                ; (24-Nb. items)/      
-        BEQ    SKIP1              
- 
-VIDES   EQU *               ; Saute les lignes vides 
-        JSR    CRLF         ; (Retour a la ligne)               
-        DECB                       
-        BNE    VIDES  
- 
-SKIP1   EQU *              
-        CLR    MAXLEN               
-        LDX    #NBITM              
-        LDB    ,X+          ; X pointe sur 1er titre                 
-        PSHS              ; Sauve le nb d'elements         
- 
-; Cherche la longueur max (plus grand titre) 
-CMAXLN  EQU * 
-        PSHS              ; Sauve le ptr sur la table des elements         
-        CLRA                       
- 
-STRLEN  EQU *               ; Calcule longueur titre courant 
-        LDB    ,X+                 
-        BEQ    SKIP2               
-        INCA                       
-        BRA    STRLEN       
-         
-         
-SKIP2   EQU *               ; 32 caracteres max 
-        CMPA   #&32                
-        BLS    SKIP3               
-        LDA    #&32                
- 
-SKIP3   EQU * 
-        CMPA   MAXLEN               
-        BLS    NEXT               
-        STA    MAXLEN               
- 
-NEXT    EQU * 
-        PULS                     
-        LEAX   SIZITM,    ; Element suivant (+44)               
-        DEC    ,S                  
-        BNE    CMAXLN 
- 
-; Calcule alignement a gauche =(39-MAXLEN-4)/              
-        PULS                     
-        LDA    #&39                
-        SUBA   MAXLEN               
-        SUBA   #$04         ; longueur de "A - "            
-        LSRA                       
-        STA    ALINEA 
- 
-; Affiche les choix, A est le premier               
-        LDA    #'               
-        PSHS                     
-        LDX    #NBITM              
-        LDA    ,X+          ; X pointe sur le premier titre                 
-        PSHS              ; Sauve le nb d'elements 
-     
-DISITM  EQU *                   
-        JSR    ALIGN               
-        LDB    1,S               
-        JSR    DISPL    ; Affiche touche a presser               
-        LDB    #SPACE   ; Affiche " - "                
-        JSR    DISPL               
-        LDB    #HYPHN                
-        JSR    DISPL               
-        LDB    #SPACE               
-        JSR    DISPL 
-                       
-        LDA    #&32     ; 32 caracteres, $00 inclus 
-DISTIT  EQU *          
-        LDB    ,X+                       
-        JSR    DISPL               
-        DECA                       
-        BNE    DISTIT 
-               
-        LEAX   SIZFIL,X ; Element suivant           
-        JSR    CRLF     ; Retour a la ligne               
-        INC    1,S               
-        DEC    ,S                  
-        BNE    DISITM   
-             
-        LEAS   2,              
-        LDX    #MSG3    ; Affiche "Votre choix : "              
-        JSR    PMSG     
- 
-SELECT  EQU *           
-        JSR    GETKEY   ; Attends une touche               
-        JSR    UPCASE   ; Transforme en majuscule si necessaire               
-        TFR    B,A                 
-        CMPB   #'               
-        BCS    BADKEY   ; Sous ASCII A ? -> Mauvaise touche               
-        SUBB   #'               
-        CMPB   NBITM               
-        BCC    BADKEY   ; Au-dessus dernier titre ? -> Mauvaise touche 
-                       
-        PSHS                     
-        TFR    A,B                 
-        JSR    PUTC     ; Affiche la touche               
-        PULS                     
-        LDA    #SIZITM  ; Multiplie par 44 (taille element)            
-        MUL                        
-        LDX    #OFEL1                
-        LEAX   D,     ; X pointe sur le disque+nom de fichier correspondant           
-        LDA    #SIZFIL  ; 12 octets                
-      
-        LDY    #FILE              
-; Copie le nom de fichier en FILE 
-CPNAME  EQU * 
-        LDB    ,X+                 
-        STB    ,Y+                 
-        DECA                       
-        BNE    CPNAME  
-              
-        LDX    #CONSIG  ; Execute la consigne reseau (CHBIN)             
-        JSR    RESEAU                 
- 
-THEEND  EQU * 
-        BRA     THEEND  ; Boucle infinie, attends chargement depuis le serveur 
-         
-; Mauvaise touche pressee 
-BADKEY  EQU *            
-        JSR    BEEP               
-        JMP    SELECT   
- 
-; Attends une touche, uniquement si FLAGK=0   
-GETKEY  EQU *             
-        LDB    FLAGK,PCR           
-        BEQ    SCRUT               
-        CLR    FLAGK,PCR           
-        RTS                        
- 
-SCRUT   CALL   KTSTH                
-        BEQ    SCRUT               
-        RTS                        
- 
-FLAGK   FCB    $00       
- 
-; Caractere dans B (a-z) change en majuscule 
-UPCASE  EQU * 
-        CMPB   #'               
-        BCS    ENDUP               
-        CMPB   #'z   
-        BHI    ENDUP               
-        SUBB   #$20 
-ENDUP   EQU *                
-        RTS                        
- 
-; Routine d'affichage caractere 
-PUTC    EQU * 
-        CALL    JPUTCH           ; Saut à PUTCH                
- 
-; Affiche ALINEA espaces 
-ALIGN   EQU * 
-        PSHS   B,                
-        LDA    ALINEA               
-        BEQ    ENDAL               
- 
-ALOOP   EQU * 
-        LDB    #SPACE                           
-        JSR    PUTC               
-        DECA                       
-        BNE    ALOOP 
-ENDAL   EQU *               
-        PULS   A,B,PC              
- 
-; Affiche un message termine par $00 pointe par X 
-PMSG    EQU * 
-        LDB    ,X+                 
-        BNE    PCAR               
-        RTS                        
-PCAR    JSR    PUTC               
-        BRA    PMSG               
- 
-; Retour a la ligne 
-CRLF    EQU * 
-        PSHS   B,CC                
-        LDB    #CR                
-        JSR    PUTC            
-        LDB    #LF                
-        JSR    PUTC               
-        PULS   CC,B,PC             
- 
-; Passe la video en page forme 
-FORM    EQU * 
-        PSHS                     
-        LDB    SYSPRA               
-        ORB    #$01                
-        STB    SYSPRA               
-        PULS   B,PC 
-         
-; Routine de traitement code reseau inconnu           
-INCON   EQU *                
-        RTS                        
- 
-; Joue un pouet 
-BEEP    EQU *     
-        PSHS   B,A,CC              
-        LDD    #$0008              
-        STD    OCTAVE               
-        LDB    #$24                
-        STB    DUREE+1               
-        LDB    #$05                
-        STB    TEMPO+1               
-        LDB    #$03                
-        STB    TIMBRE               
-        LDB    #$31                
-        JSR    PLAY               
-        PULS   CC,A,B,PC           
-PLAY    CALL   JNOTEH                
- 
-; Convertit un nombre 16 bits non signe en hexadecimal 
-; D = nombre, X = pointeur sur buffer caractere 
-CV16    EQU *       
-        PSHS                     
-        LEAU   BASE16,PCR           
-        BRA    CONVRT               
- 
-; Convertit un nombre 16 bits non signe en decimal 
-; D = nombre, X = pointeur sur buffer caractere 
-CV10    EQU * 
-        PSHS                     
-        LEAU   BASE10,PCR           
- 
-CONVRT  EQU * 
-        PSHS   B,                
-        LDA    ,U+       ; Nombre de chiffres          
-        STA    1,S               
-        PULS            
-        
-LOOP2:                 
-        BSR    DIVIZ               
-        BNE    BEGNB     ; Dividende non nul -> debut du nombre          
-        DEC    ,S        ; Chiffre suivant          
-        BNE    LOOP2               
- 
-        LDB    #'      ; D valait 0 en fait         
-        STB    ,X+                 
-        BRA    CVEXIT               
- 
-CONTDV  EQU * 
-        BSR    DIVIZ     ; Continue la division 
-               
-BEGNB   EQU *               
-        PSHS                     
-        LDB    ,X        ; Chiffre courant                
-        ADDB   #'               
-        CMPB   #'               
-        BLS    NOTHEX    ; $A-$F ?            
-        ADDB   #$07      ; Correction 
-         
-NOTHEX  EQU *             
-        STB    ,X+       ; Stocke le caractere            
-        PULS                     
-        DEC    ,S        ; Chiffre suivant                  
-        BNE    CONTDV               
- 
-CVEXIT  EQU * 
-        PULS   A,U,PC    
-           
-; Division de D par ,U 
-; D = reste, ,X = dividende (0..9 ou 0..F) 
-DIVIZ   EQU *           
-        CLR    ,X       
- 
-DVLOOP  EQU *            
-        SUBD   ,                 
-        BCS    DVEXIT               
-        INC    ,X                  
-        BRA    DVLOOP 
- 
-DVEXIT  EQU *               
-        ADDD   ,U++                
-        TST    ,X                  
-        RTS                        
- 
-BASE10  EQU *  
-        FCB     $05             ; 5 chiffres 
-        FDB     &10000, 
-        FDB     &1000, 
-        FDB     &100, 
-        FDB     &10, 
-        FDB     &1 
-                 
-BASE16  EQU * 
-        FCB     $04             ; 4 chiffres 
-        FDB     $1000 
-        FDB     $0100 
-        FDB     $0010 
-        FDB     $0001 
- 
-; Affiche no. poste contenu dans B 
-DISPO   EQU * 
-        CLRA                       
-        BSR    CONV10               
-        LEAX   -2,                
-        LBRA   PMSG  
-     
-; Affiche un nombre contenu dans D (inutilise) 
-DISP10  EQU *              
-        BSR    CONV10               
-        LEAX   -5,                     
-        LBRA   PMSG 
-              
-; Affiche un nombre contenu dans D (inutilise) 
-DISP10B EQU *               
-        BSR    CONV10               
-        LEAX   STRBUF,PCR               
-        LBRA   PMSG               
- 
-; Convertit un nombre 16 bits non signe en chaîne de caracteres (decimal) 
-; D = nombre, resultat dans STRBUF 
-CONV10  EQU * 
-        LEAX   STRBUF,PCR           
-        BSR    CV10               
-        CLR    ,X           ; termine la chaine                  
-        RTS                        
- 
-; Affiche un nombre en hexadecimal 16 bits (inutilise) 
-DISP16  EQU * 
-        LEAX   STRBUF,PCR           
-        PSHS                     
-        LBSR   CV16               
-        CLR    ,X                  
-        PULS                     
-        LBRA   PMSG 
-               
-        FCB SPACE,SPACE,SPACE,SPACE               
- 
-STRBUF  EQU *            
-        FCB $00,$00,$00,$00,$00,$00 ; Buffer pour conversion numerique     
-       
-MAXLEN  FCB $00             ; Longueur du plus grand titre 
-ALINEA  FCB $00             ; Alignement a gauche       
-             
-MSG1    FCB $1F,$20,$20,$1F,$12,$14,$1B,$44,$1B,$56,$1B,$66,$0C, 
-MSG1B   FCB $11 
-        FCC /NANORESEAU                     poste / 
-        FCB $00 
-         
-MSG2    FCC /                / 
-        FCB $1B,$73 
-        FCC /MENU/ 
-        FCB $1B,$70 
-        FCB $00         
-         
-MSG3    FCB $1F,$58,$4D 
-        FCC /Votre choix : / 
-        FCB $00                 
-     
-; Zone de consigne reseau     
-CONSIG  FCB $18             ; longueur 24 
-        FCB $00             ; DEST = serveur 
-        FCB $09,$37         ; Tache R = 09, Tache A = 55 (CHBIN) 
-        FDB $0000           ; Nb octets 
-        FCB $00             ; Page 
-        FDB $0000           ; Adresse 
-        FCB $00             ; Ordinateur 
-        FCB $00             ; Application 
-FILE    FCB $00             ; Disque  
-        FCB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; Nom du fichier 
-        FCB $00             ; Mode de chargement 
-         
-; Zone de compte-rendu reseau         
-CPTRD   FCB $08                                 ; Longueur 
-        FCB $00,$00,$00,$00,$00,$00,$00,$00               
-         
-ENDPRG  EQU * 
- 
-        END                             </code> 
menu_de_demarrage.1561710315.txt.gz · Last modified: 2019/06/28 10:25 by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki