code_source_de_menu.to7_v3.2
This is an old revision of the document!
Code source de MENU.TO7 v3.1, 3.2, 3.3
* MENU.TO7 version 3.1 RESET EQU $FFFE BEGRAM EQU $6100 ENDRAM EQU $E000 IRQRE EQU $E041 IRQPT EQU $6064 SYSPRC EQU $E7C3 NUPOST EQU $E7D8 NUPO EQU $6052 RELACH EQU $E02B RESEAU EQU $E025 M5VCT EQU $EFFE ADCNTC EQU $5FFE ADCRDU EQU $5FF4 ADTRCR EQU $5FFA 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 $9000 START JMP MAIN * Table des entrees de menu * Maximum 20 elements, 1 element = 44 octets, soit 880 octets au total NBITM FCB 2 ; 2 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 TO7/ ; Fichier correspondant, 11 caracteres ELEM2 FCC /NRDOS/ ; Titre 2 (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 FILE2 FCC /NRDOS TO7/ ; Fichier correspondant, 11 caracteres ELEM3 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 3 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE3 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM4 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 4 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE4 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM5 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 5 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE5 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM6 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 6 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE6 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM7 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 7 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE7 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM8 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 8 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE8 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM9 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 9 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE9 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM10 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 10 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE10 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM11 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 11 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE11 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM12 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 12 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE12 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM13 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 13 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE13 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM14 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 14 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE14 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM15 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 15 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE15 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM16 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 16 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE16 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM17 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 17 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE17 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM18 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 18 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE18 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM19 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 19 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE19 FCC /12345678123/ ; Fichier correspondant, 11 caracteres ELEM20 FCB $00,$00,$00,$00,$00,$00,$00,$00 ; Titre 20 (32 octets max) 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 $00,$00,$00,$00,$00,$00,$00,$00 FCB $01 ; Disque source FILE20 FCC /12345678123/ ; Fichier correspondant, 11 caracteres * ORG $9374 MAIN EQU * LDX #MSG1 ; Affiche entete JSR PMSG ORCC #$FF ; Pas d'interruptions LDX #BEGRAM ZMEM1 EQU * ; Efface la memoire de $6100 à $9002 CLR ,X+ CMPX #NBITM BCS ZMEM1 LDX #ENDPRG ZMEM2 EQU * ; Efface la memoire de $9629 à $DFFF CLR ,X+ CMPX #ENDRAM BCS ZMEM2 LDS #BEGRAM+$100 ; Fixe la pile en $6200 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)/2 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 B ; Sauve le nb d'elements * Cherche la longueur max (plus grand titre) CMAXLN EQU * PSHS X ; 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 X LEAX SIZITM,X ; Element suivant (+44) DEC ,S BNE CMAXLN * Calcule alignement a gauche =(39-MAXLEN-4)/2 PULS B LDA #&39 SUBA MAXLEN SUBA #$04 ; Longueur de "A - " LSRA STA ALINEA * Affiche les choix, A est le premier LDA #'A PSHS A LDX #NBITM LDA ,X+ ; X pointe sur le premier titre PSHS A ; 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 $0C,X JSR $94CE INC $01,S DEC ,S BNE $9420 LEAS $02,S LDX #$95F6 JSR $94C4 JSR $9493 JSR $94A5 TFR B,A CMPB #$41 BCS $948D SUBB #$41 CMPB $9003 BCC $948D PSHS B TFR A,B JSR $94B0 PULS B LDA #$2C MUL LDX #$9024 LEAX D,X LDA #$0C LDY #$9613 LDB ,X+ STB ,Y+ DECA BNE $947E LDX #$9608 JSR RESEAU BRA $948B JSR $94E9 JMP $9454 LDB $94A4,PCR BEQ $949E CLR $94A4,PCR RTS JSR $E806 BEQ $949E RTS NEG <$C1 ??? BCS $94AF CMPB #$7A BHI $94AF SUBB #$20 RTS JMP $E803 PSHS B,A LDA $95A7 BEQ $94C2 LDB #$20 JSR $94B0 DECA BNE $94BA PULS A,B,PC LDB ,X+ BNE $94C9 RTS JSR $94B0 BRA $94C4 PSHS B,CC LDB #$0D JSR $94B0 LDB #$0A JSR $94B0 PULS CC,B,PC PSHS B LDB $E7C3 ORB #$01 STB $E7C3 PULS B,PC RTS PSHS B,A,CC LDD #$0008 STD $6036 LDD #$0024 STD $6033 LDD #$0005 STD $6031 LDB #$03 STB $6035 LDB #$31 JSR $9509 PULS CC,A,B,PC JMP $E81E PSHS U LEAU $9562,PCR BRA $951A PSHS U LEAU $9557,PCR PSHS B,A LDA ,U+ STA $01,S PULS A BSR $9548 BNE $9532 DEC ,S BNE $9522 LDB #$30 STB ,X+ BRA $9546 BSR $9548 PSHS B LDB ,X ADDB #$30 CMPB #$39 BLS $953E ADDB #$07 STB ,X+ PULS B DEC ,S BNE $9530 PULS A,U,PC CLR ,X SUBD ,U BCS $9552 INC ,X BRA $954A ADDD ,U++ TST ,X RTS ??? BEQ $956A COM <$E8 NEG <$64 NEG <$0A NEG <$01 LSR <$10 NEG <$01 NEG <$00 ??? NEG <$4F BSR $9583 LEAX -$02,X LBRA $94C4 BSR $9583 LEAX -$05,X LBRA $94C4 BSR $9583 LEAX $95A0,PCR LBRA $94C4 LEAX $95A0,PCR BSR $9514 CLR ,X RTS LEAX $95A0,PCR PSHS X LBSR $950C CLR ,X PULS X LBRA $94C4 ... ENDPRG EQU * END
code_source_de_menu.to7_v3.2.1685189198.txt.gz · Last modified: 2023/05/27 14:06 by fool-duplex