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 12:01] 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 
-* Maximum 20 elements, 1 element = 44 octets, soit 880 octets au total 
- 
-NBITM  FCB    4                               ; 4 elements dans le menu 
- 
-ELEM1  FCC    /BASIC/                         ; Titre 1 (32 octets max) 
-       FCB    $00,$00,$00                      
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
- 
-OFEL1  FCB    $01                             ; Disque source 
-FILE1  FCC    /BASIC   MO5/                   ; Fichier correspondant, 11 caracteres                         
- 
-ELEM2  FCC    /LOGO/                          ; Titre 2 (32 octets max) 
-       FCB    $00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
- 
-       FCB    $01                             ; Disque source 
-FILE2  FCC    /LOGO    MO5/                   ; Fichier correspondant, 11 caracteres                         
- 
-ELEM3  FCC    /LSE/                           ; Titre 3 (32 octets max) 
-       FCB    $00,$00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
- 
-       FCB    $01                             ; Disque source 
-FILE3  FCC    /LSE     MO5/                   ; Fichier correspondant, 11 caracteres                         
- 
-ELEM4  FCC    /NRDOS/                         ; Titre 4 (32 octets max) 
-       FCB    $00,$00,$00                      
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00 
- 
-       FCB    $01                             ; Disque source 
-FILE4  FCC    /NRDOS   MO5/                   ; Fichier correspondant, 11 caracteres                         
- 
-       RMB    44*16 
- 
-*      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    ADCNTC                          ; Reprise en main apres un CTRL-C          
-       LDX    #CPTRD              
-       STX    ADCRDU                          ; Zone de compte-rendu               
-       LDX    #INCON              
-       STX    ADTRCR                          ; 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,                       ; 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                
- 
-* Copie le nom de fichier en FILE      
-       LDY    #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,PC           
-       BEQ    SCRUT               
-       CLR    FLAGK,PC           
-       RTS                        
- 
-SCRUT  EQU    * 
-       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 a 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   EQU    * 
-       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   EQU    *  
-       CALL   JNOTEH                
- 
-* Convertit un nombre 16 bits non signe en hexadecimal 
-* D = nombre, X = pointeur sur buffer caractere 
-CV16   EQU    *       
-       PSHS                     
-       LEAU   BASE16,PC           
-       BRA    CONVRT               
- 
-* Convertit un nombre 16 bits non signe en decimal 
-* D = nombre, X = pointeur sur buffer caractere 
-CV10   EQU    * 
-       PSHS                     
-       LEAU   BASE10,PC           
- 
-CONVRT EQU    * 
-       PSHS   B,                
-       LDA    ,U+                             ; Nombre de chiffres          
-       STA    1,S               
-       PULS            
-        
-LOOP2  EQU    * 
-       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    5                               ; 5 chiffres 
-       FDB    &10000 
-       FDB    &1000 
-       FDB    &100 
-       FDB    &10 
-       FDB    &1 
-                 
-BASE16 EQU    * 
-       FCB    4                               ; 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) 
-DSP10B EQU    *               
-       BSR    CONV10               
-       LEAX   STRBUF,PC               
-       LBRA   PMSG               
- 
-* Convertit un nombre 16 bits non signe en chaîne de caracteres (decimal) 
-* D = nombre, resultat dans STRBUF 
-CONV10 EQU    * 
-       LEAX   STRBUF,PC           
-       BSR    CV10               
-       CLR    ,X                              ; Termine la chaine                  
-       RTS                        
- 
-* Affiche un nombre en hexadecimal 16 bits (inutilise) 
-DISP16 EQU    * 
-       LEAX   STRBUF,PC 
-       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 
-       FCB    $1F,$12,$14 
-       FCB    $1B,$44,$1B,$56,$1B,$66 
-       FCB    $0C 
-       FCB    $00 
-        
-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 ; Nom du fichier 
-       FCB    $00,$00,$00                     ; Suffixe 
-       FCB    $00                             ; Mode de chargement 
-         
-* Zone de compte-rendu reseau         
-CPTRD  FCB    $08                             ; Longueur = 8 
-       FCB    $00,$00,$00,$00,$00,$00,$00,$00               
-         
-ENDPRG EQU    * 
- 
-       END 
-</code> 
menu_de_demarrage.1561716064.txt.gz · Last modified: 2019/06/28 12:01 by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki