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/07/30 20:04] fool-duplexmenu_de_demarrage [2023/05/27 13:22] (current) fool-duplex
Line 3: Line 3:
 Disquette de développement : {{ :menu.fd |menu.fd}} Disquette de développement : {{ :menu.fd |menu.fd}}
  
-<code>* MENU.MO5 version 3.1+  [[Code source de MENU.MO5 v3.2|Code source de MENU.MO5]] 
 +  * [[Code source de MENU.TO7 v3.2|Code source de MENU.TO7]] 
  
-RESET  EQU    $FFFE 
-BEGRAM EQU    $2100 
-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    PMSG             
-       ORCC   #$FF                            ; Pas d'interruptions 
-                     
-       LDX    #BEGRAM              
-ZMEM1  EQU    *                               ; Efface la memoire de $2100 à $5002 
-       CLR    ,X+                 
-       CMPX   #NBITM              
-       BCS    ZMEM1  
-              
-       LDX    #ENDPRG              
-ZMEM2  EQU    *                               ; Efface la memoire de $563D à $9FFF 
-       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    PMSG              
-       LDB    NUPOST                          ; Lit numero de poste               
-       ANDB   #$1F                            ; de 0 à 31         
-       CLRA                       
-       JSR    DISPO                           ; Affiche numero de poste               
-       LDX    #MSG2                           ; Affiche "MENU"         
-       JSR    PMSG               
- 
-       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    PUTC                            ; Affiche touche a presser               
-       LDB    #SPACE                          ; Affiche " - "                
-       JSR    PUTC               
-       LDB    #HYPHN                
-       JSR    PUTC               
-       LDB    #SPACE               
-       JSR    PUTC 
-                      
-       LDA    #&32                            ; 32 caracteres, $00 inclus 
-DISTIT EQU    *          
-       LDB    ,X+                       
-       JSR    PUTC               
-       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,PCR           
-       BEQ    SCRUT               
-       CLR    FLAGK,PCR           
-       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,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  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,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 
-       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.1564509879.txt.gz · Last modified: 2019/07/30 20:04 by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki