NMPROC:  VAL         "SO"            < NOM DU PROCESSEUR.
         IDP         "SO - RELEASE 01/06/1979"
         IDP         "JOHN F. COLONNA"
         EOT         #SIP DEFINITION CMS5#
         EOT         #SIP DEF PROCESSEUR#
         PROG
         WORD        SON             < ENTRY POINT DU GENERATEUR SON.
         WORD        0
PSON:    EQU         $               < P='12 !!!
         LRP         L
         BR          -2,L            < ENTRY DANS LE PROCESSEUR.
         EOT         #SIP DEFINITION ITEM#
ITEM1:   EQU         ZERO+PILE-LTNI  < @ITEM1.
         EOT         #SIP IMAGE 256#
IMAG:    EQU         ZERO+PILE+5     < ADRESSE DE L'IMAGE VIDEO.
NOM:     EQU         ITEM1           < LE NOM DE L'IMAGE EST EN
                                     < RECOUVREMENT DE L'EN-TETE ITEM1.
EOT:     EQU         IMAG-2
LONG:    EQU         IMAG-1          < ADRESSE DU MOT DE VALIDATION.
         PAGE
<
<
<        L O C A L  :
<
<
         LOCAL
LOC:     EQU         $
<
< BUFFERS ET MESSAGES :
<
REP:     WORD        0               < REPONSE UTILISATEUR.
MINT:    BYTE        2;'6D;">";0
MNOM:    BYTE        5;'6D
         ASCI        "NOM>"
MP1:     BYTE        19;'6D
         ASCI        "ADDITION SIGNAUX?"
MERR:    BYTE        3;'6D;"?";"?"
MCU1:    ASCI        "!ASSIGN B=CU"
         BYTE        NBCUS;'04
MCUS:    ASCI        "!ASSIGN B="
         BYTE        "S";'04
<
< DEMANDES A CMS4 :
<
DEMIN:   WORD        '0101           < ENTREE DE LA REPONSE UTILISATEUR.
         WORD        REP-ZERO*2
         WORD        1
DEMNOM:  WORD        '0101           < DEMANDE NOM DE L'IMAGE VIDEO.
         WORD        NOM-ZERO*2
         WORD        LNOM*2
DEMOUT:  WORD        '0202           < EDITION DES MESSAGES.
         WORD        0               < @OCTET MESSAGE.
         WORD        0               < LONGUEUR MESSAGE.
DEMCU1:  WORD        '0002           < APPEL CCI NON INTERACTIF.
         WORD        MCU1-ZERO*2     < POUR !ASSIGN B=CU1.
         WORD        80
DEMS:    WORD        '0002           < APPEL DU CCI NON INTERACTIF.
         WORD        MCUS-ZERO*2     < POUR UN !ASSIGN B=S.
         WORD        80
DEMCCI:  WORD        '0001           < APPEL DU CCI.
DEMMEM:  WORD        '0004           < DEMANDE ALLOCATION 8K MOTS.
         WORD        0
         WORD        '4000           < '4000 OCTETS.
RELMEM:  WORD        '0004           < DEMANDE DE RETOUR 4K MOTS.
         WORD        0
         WORD        '2000           < '2000 OCTETS.
DEMSGN:  WORD        '0402           < DEMANDE SGN OVERLAY.
         WORD        BRANCH-ZERO*2
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
DEMTV:   WORD        '0502           < ACCES A UNE IMAGE DE TV.
         WORD        NOM-ZERO*2
         WORD        IMAG-NOM+LIMAG*2
         WORD        EOT-NOM*2
<
< RELAIS DUVERS :
<
AOVL:    WORD        OVL             < CHARGEMENT DES OVERLAYS.
AGOGE:   WORD        GOGE            < RETOUR A 'GE'.
APRINT:  WORD        PRINT           < EDITION MESSAGES.
AINTER:  WORD        E4              < INTERROGATION UTILISATEUR.
ASP:     WORD        SP              < ROUTINE MAITRE DE SORTIE CU1.
AOCTAV:  WORD        OCTAV           < ADRESSE DE L'OCTAVE DEMANDE.
ANPER:   WORD        NPER            < ADRESSE DU NBRE DE PERIODES.
ATEMPO:  WORD        TEMPO           < ADRESSE DE LA TEMPORISATION DE
                                     < DILATATION DES FREQUENCES.
AASIG:   WORD        ASIG            < ADRESSE DE L'ADRESSE DE L'
                                     < ARGUMENT TRANSMIS A LA ROUTINE
                                     < MAITRE (SP).
<
< CONSTANTES VIDEOS :
<
I1:      WORD        ITEM1           < @EN-TETE ITEM1.
ASI1:    WORD        SI1             < @ZONE SAVE EN-TETE ITEM1.
SI1:     DZS         LNOM+2          < ZONE DE SAVE EN-TETE ITEM1.
ALONG:   WORD        LONG            < RELAI DE VALIDATION DE L'IMAGE.
NMOTS:   WORD        CNMPL           < NBRE DE MOTS PAR LIGNE D'IMAGE.
NLIG:    WORD        1024/DY         < NBRE DE LIGNES PAR IMAGE.
AIMAG:   WORD        IMAG            < ADRESSE DE L'IMAGE.
<
< CONSTANTES :
<
IS:      WORD        0               < SI IS=0 : L'EN-TETE N'A PAS
                                     < ETE SAUVEGARDEE.
POINT1:  WORD        0               < INDICATEUR DE PARCOURS DES
                                     < COLONNES DE BITS :
                                     < POINT1=0 : ON NE PREND QUE LE
                                     <            1ER POINT COLONNE ,
                                     < POINT1=1 : ON ADDITIONNE TOUTES
                                     <            LES AMPLITUDES.
NGE:     WORD        "GE"            < NOM DE L'OVERLAY 'GE'.
ACNSYS:  ASCI        ":SYS"
APILE:   WORD        PILE-1
<
< SINUSOIDE :
<
SINUS:   EQU         $
         BYTE        128-0;128-9;128-17;128-26;128-34;128-42
         BYTE        128-50;128-57;128-64;128-70;128-77;128-82
         BYTE        128-87;128-90;128-93;128-97;128-98;128-99
         BYTE        128-100;128-99;128-98;128-97;128-93;128-90
         BYTE        128-87;128-82;128-77;128-70;128-64;128-57
         BYTE        128-50;128-42;128-34;128-26;128-17;128-9
         BYTE        128+0;128+9;128+17;128+26;128+34;128+42
         BYTE        128+50;128+57;128+64;128+70;128+77;128+82
         BYTE        128+87;128+90;128+93;128+97;128+98;128+99
         BYTE        128+100;128+99;128+98;128+97;128+93;128+90
         BYTE        128+87;128+82;128+77;128+70;128+64;128+57
         BYTE        128+50;128+42;128+34;128+26;128+17;128+9
SIN:     EQU         $
         WORD        SINUS-$*2       < -NBRE D'ECHANTILLONS.
<
< ANALYSE DU SIGNAL COURANT :
<
AMPLI:   WORD        0               < AMPLITUDE DE L'ECHANTILLON
                                     < COURANT.
KCOL:    WORD        CNMPL           < DECOMPTEUR DES COLONNES DE
                                     < MOTS DE 16 BITS.
XSIG:    WORD        0               < INDEX ECHANTILLON COURANT.
ASIGN:   WORD        0               < @DESCRIPTEUR SIGNAL COURANT.
ASIGX:   WORD        SIG,X           < RELAI D'ACCES AU SIGNAL.
SIG:     EQU         $
         DZS         1024/DY/2+1     < DESCRIPTEUR DU SIGNAL COURANT.
         PROG
         PAGE
<
<
<        E M I S S I O N   D ' U N   M E S S A G E  :
<
<
<        ARGUMENT :
<                    A=@MOT DU MESSAGE , LE 1ER OCTET EN
<                      DONNANT LA LONGUEUR CARACTERES.
<
<
PRINT:   EQU         $
         LR          A,C             < C=@MOT DU MESSAGE.
         ADR         A,A
         ADRI        1,A             < A=@OCTET DU MESSAGE.
         STA         DEMOUT+1        < MAJ DE DEMOUT.
         LBY         0,C             < A=LONGUEUR DU MESSAGE.
         STA         DEMOUT+2        < MAJ DE DEMOUT.
         LAD         DEMOUT
         SVC         0               < EMISSION DU MESSAGE.
         RSR
         PAGE
<
<
<        G E N E R A T E U R   S O N  :
<
<
<        FORMAT DES AMPLITUDES :
<                      SOIT A UNE AMPLITUDE DU SIGNAL :
<                                    -127<=A<=128 ,
<                    ON ENVERRA AU CONVERTISSEUR : 128-A.
<
<
         WORD        LOC+'80
         WORD        BRANCH
SON:     EQU         $
         LRP         K
         ADRI        -1,K
         PLR         L,W             < INITIALISATION DE L ET W.
         LA          APILE
         LR          A,K             < INITIALISATION DE LA PILE K.
<
< RESERVATION DE CU1 :
<
         LAD         DEMCU1
         SVC         0               < APPEL DU CCI NON INTERACTIF.
         JE          E1              < OK , ON PEUT Y ALLER ...
<
< SAUVEGARDE DE L'EN-TETE DE L'ITEM1 A PRIORI :
<
         LA          I1
         LB          ASI1
         LXI         LNOM+1
         MOVE                        < SAVE L'EN-TETE DANS SI1.
         IC          IS              < IS>0 : EN-TETE SAUVEGARDEE.
<
<        T R A I T E M E N T   D E S   E R R E U R S  :
<
E1100:   EQU         $
         LAD         MERR
         BSR         APRINT          < ENVOI D'UN MESSAGE D'ERREUR.
<
<        R E T O U R   A   G E  :
<
GOGE:    EQU         $
         LAD         RELMEM
         SVC         0               < RETOUR A 4K PAR PRUDENCE.
<
< RESTAURATION DE L'EN-TETE DE L'ITEM1 :
<
         CPZ         IS              < EN-TETE SAUVEGARDEE ???
         JE          NIS             < NON , PAS DE RESTAURATION ...
         LA          ASI1
         LB          I1
         LXI         LNOM+1
         MOVE                        < RESTAURE A PARTIR DE SI1.
NIS:     EQU         $
         LAD         DEMS
         SVC         0               < ON REND LE CU1 AVANT DE SORTIR.
<
< CAHRGEMENT DE L'OVERLAY 'GE' :
<
         LA          NGE
         STA         0,W             < LE NOM DE 'GE' EST MIS EN TETE
                                     < DE LA BRANCHE.
         LAI         '06
         STBY        DEMSGN          < NVP DE LOAD SOUS :SYS.
E101:    EQU         $
         LAD         DEMSGN          < A=@DEMSGN ; W=@BRANCH.
         BSR         AOVL            < TENTATIVE D'OVERLAY.
         LAD         DEMCCI
         SVC         0               < RETOUR AU CCI , SI OVERLAY
                                     < IMPOSSIBLE.
         JMP         E101            < ET NOUVELLE TENTATIVE SI !GO.
<
<        G E N E R A T I O N   S O N  :
<
E1:      EQU         $
         WORD        '1E25           < (A,B)=ACN DU DEMANDEUR.
         CP          ACNSYS          < EST-CE :SYS ???
         JNE         E1100           < NON , ON ABORTE ...
         LR          B,A
         CP          ACNSYS+1        < EST-CE :SYS ???
         JNE         E1100           < NON , ON ABORTE ...
<
< RESTAUARTION SIGNAL SINUSOIDAL :
<
E302:    EQU         $
         LAD         SIN             < A=@SIGNAL SINUSOIDAL.
         STA         &AASIG          < QUI EST L'ARGUMENT DE SP.
         LAI         50
         STA         &ANPER          < DUREE DES NOTES EN PERIODES.
E4:      EQU         $
         LAD         MINT
         BSR         APRINT          < ENVOI D'UNE INVITATION.
<
< ENTREE DES COMMANDES :
<
E300:    EQU         $
         LAD         DEMIN
         SVC         0               < ENTREE 1 CARACTERE REPONSE.
<
<        REPONSES RECONNUES :
<                    F : RETOUR A GE ,
<                    M : ORGUE ELECTRONIQUE ,
<                    S : RETOUR AU SIGNAL SINUSOIDAL ,
<                    I : ENTREE D'UN NOUVEAU SIGNAL SOUS
<                        FORME D'UNE IMAGE VIDEO.
<
         LBY         REP             < A=REPONSE UTILISATEUR.
         CPI         "F"
         JE          GOGE            < RETOUR A GE.
         CPI         "S"
         JE          SIGNAL          < RETOUR AU SINUSOIDAL.
         CPI         "M"
         JE          E2              < ORGUE ELECTRONIQUE.
         CPI         "I"
         JE          IMAGE           < ENTREE NOUVEAU SIGNAL.
E301:    EQU         $
         LAD         MERR
         BSR         APRINT          < ENVOI D'UN MESSAGE D'ERREUR.
         JMP         E4              < VERS UNE NOUVELLE INTERROGATION.
E304:    EQU         $               < ERREUR DE LOAD IMAGE.
         LAD         RELMEM
         SVC         0               < RETOUR A 4K MOTS.
         JMP         E301            < VERS LE MESSAGE D'ERREUR.
<
<
<        R E T O U R   A U   S I N U S O I D A L  :
<
<
SIGNAL:  EQU         E302
<
<
<        C H A N G E M E N T   D E   S I G N A L  :
<
<
IMAGE:   EQU         $
<
< ALLOCATION DE 8K MOTS :
<
         LAD         DEMMEM
         SVC         0
<
< ENTREE DU NOM DE L'IMAGE VIDEO SUPPORT DU SIGNAL :
<
         LAD         MNOM
         BSR         APRINT          < ENVOI D'UNE INVITATION.
         LAD         DEMNOM
         SVC         0               < ENTREE DU NOM DE L'IMAGE VIDEO.
<
< ESSAIS DE CHARGEMENT :
<
         LAI         '05
         STBY        DEMTV
         LAD         DEMTV
         SVC         0               < ESSAI DE CHARGEMENT SOUS :SYS.
         JE          IMAG1           < OK.
         LAI         '06             < ERREUR : ON ESSAYE SOUS ACN.
         STBY        DEMTV
         LAD         DEMTV
         SVC         0               < ESSAI SOUS L'<ACN> COURANT.
         JNE         E304            < ERREUR : L'IMAGE N'EXISTE PAS.
<
< VALIDATION DE L'IAMGE CHARGEE :
<
IMAG1:   EQU         $
         LA          &ALONG
         JAGE        E304            < CAS DU FLOPPY.
         CPI         -3
         JL          E304            < ERREUR : CE N'EST PAS DE LA
                                     < VIDEO ...
<
< NATURE DE LA RECUPERATION DES AMPLITUDES :
<
IMAG8:   EQU         $
         LAD         MP1
         BSR         APRINT          < ENVOI INTERROGATION.
         LAD         DEMIN
         SVC         0               < ENTREE DE LA REPONSE.
<
<        REPONSES RECONNUES :
<                    O : TOUTES LES AMPLITUDES D'UNE COLONNE
<                        SONT AJOUTEES ,
<                    N : ON NE PREN QUE LE 1ER POINT RENCONTRE ,
<                        EN PARTANT DU HAUT DE L'IMAGE.
<
         STZ         POINT1          < 1ER POINT SEUL A PRIORI ...
         LBY         REP             < A=REPONSE UTILISATEUR.
         CPI         "N"
         JE          IMAG9           < NON , PAS D'ADDITION SIGNAUX.
         IC          POINT1          < ADDITION DES SIGNAUX A PRIORI.
         CPI         "O"
         JNE         IMAG8           < NON , ERREUR DE REPONSE ...
IMAG9:   EQU         $
<
< OK , ANALYSE DU SIGNAL :
<
         STZ         XSIG            < INITIALISATION DE L'INDEX
                                     < D'ECHANTILLONAGE COURANT.
         LA          AIMAG
         LR          A,C             < C=BASE DE L'IMAGE VIDEO.
         LAI         CNMPL
         STA         KCOL            < INITIALISATION DU DECOMPTEUR
                                     < DES COLONNES DE 1L BITS.
<
< ACCES A UNE COLONNE DE 16 BITS :
<
IMAG2:   EQU         $
         LXI         0               < INITIALISATION DU NUMERO DE COLONNE
                                     < DE 1 BIT.
<
< ACCES A UNE COLONNE DE 1 BIT :
<
IMAG3:   EQU         $
         LY          NLIG            < Y=NBRE DE LIGNE , SOIT L'INDEX
                                     < LIGNE+1.
         LBI         0               < INITIALISATION DU COMPTEUR DE
                                     < POINTS A 1 DANS LA COLONNE.
         PSR         C               < SAVE LA BASE DE LA COLONNE DE 16
                                     < BITS.
         STZ         AMPLI           < INITIALISATION DE L'AMPLITUDE
                                     < DE LA COLONNE COURANTE 1 BIT.
IMAG4:   EQU         $
         LA          0,C
         TBT         0,X             < TEST DU BIT COURANT.
         JNC         IMAG5           < BIT COURANT=0.
         RBT         0,X             < BIT COURANT=1 : ON LE RAZ.
         STA         0,C             < MAJ DE L'IMAGE VIDEO.
         CPZ         POINT1          < 1ER POINT SEUL OU PAS ???
         JNE         IMAG7           < NON , ON VA AJOUTER LES SIGNAUX.
         CPZR        B               < DANS LE CAS OU L'ON NE PREND
                                     < QU'UN POINT , EST-ON SUR LE 1ER???
         JNE         IMAG5           < NON , ON L'IGNORE DONC.
IMAG7:   EQU         $               < CAS D'UN POINT SIGNIFICATIF.
         ADRI        1,B             < COMPTAGE DES POINTS A 1.
         LAI         -1024/DY/2
         ADR         Y,A             < A=AMPLITUDE DU POINT COURANT.
         AD          AMPLI
         STA         AMPLI           < CALCUL DE L'AMPLITUDE DE
                                     < LA COLONNE COURANTE.
IMAG5:   EQU         $
         ADRI        CNMPL,C         < PASSAGE A LA LIGNE SUIVANTE.
         ADRI        -1,Y            < DECOMPTAGE DES LIGNES.
         CPZR        Y               < EST-CE FINI POUR CETTE COLONNE ???
         JG          IMAG4           < NON , ON CONTINUE.
<
< PASSAGE A LA COLONNE DE BIT SUIVANTE :
<
         PLR         C               < RESTAURE LA BASE DE LA COLONNE
                                     < COURANTE.
         CPZR        B               < A-T'ON TROUVE AU MOINS 1
                                     < POINT A 1 DANS CETTE COLONNE ???
         JE          IMAG6           < NON , C'EST FINI ....
<
< CALCUL FINAL DE L'AMPLITUDE DE LA COLONNE COURANTE :
<
         LAI         1024/DY/2
         SB          AMPLI           < A=AMPLITUDE COURANTE COMPATIBLE
                                     < VAEC LE CONVERTISSEUR.
         PSR         X
         LX          XSIG            < X=INDEX COURANT D'ECHANTILLONAGE.
         ANDI        'FF             < CALCUL MODULO 256.
         STBY        &ASIGX          < ET SAVE L'AMPLITUDE COURANTE.
         IC          XSIG            < PROGRESSION DE L'INDEX.
         PLR         X
         PSR         C               < SAVE LA BASE C DE LA COLONNE.
         MP          NMOTS
         ADR         B,C             < C=@MOT CONTENANT LE POINT
                                     < EQUIVALENT A L'AMPLITUDE CALCULEE
         LA          0,C
         SBT         0,X             < POSITIONNEMENT DU POINT EQUIVALENT
         STA         0,C             < MAJ DE L'IMAGE VIDEO.
         PLR         C               < RESTAURE LA BASE C DE LA L
                                     < COLONNE COURANTE.
         ADRI        1,X             < PASSAGE A LA COLONNE DE BITS
                                     < SUIVANTE.
         LAI         'F              < MASQUE SUR 4 BITS.
         ANDR        X,A             < CALCUL DE X MODULO 16.
         JANE        IMAG3           < OK , IL Y A UNE COLONNE DE
                                     < BITS SUIVANTE.
         ADRI        1,C             < SINON , ON PASSE A LA COLONNE
                                     < DE MOTS SUIVANTE.
         DC          KCOL            < DECOMPTAGE DES COLONNES.
         JG          IMAG2           < OK , IL EN RESTE.
<
< FIN D'ANALYSE DU SIGNAL :
<
IMAG6:   EQU         $
         LX          XSIG            < X=INDEX FINAL D'ECHANTILLONAGE.
         LAI         0
         STBY        &ASIGX          < RAZ L'AMPLITUDE SUIVANTE.
         LR          X,A
         ADRI        1,A
         SLRS        1               < A=NBRE DE MOTS OCCUPES PAR
                                     < LE SIGNAL ECHANTILLONNE.
         LR          A,X             < X=INDEX MOT.
         ADR         A,A             < A=NBRE D'OCTETS OCCUPES PAR
                                     < LE SIGNAL.
         NGR         A,A             < A=-NBRE D'OCTETS DU SIGNAL.
         STA         &ASIGX          < QUE L'ON INSERE EN QUEUE DU
                                     < SIGNAL.
         LAD         SIG
         ADR         X,A             < A=@DU DESCRIPTEUR DU SIGNAL.
         STA         ASIGN           < QUE L'ON SAVE.
         STA         &AASIG          < ET QUE L'ON TRANSMET A LA
                                     < ROUTINE MAITRE DE SORTIE CU1.
<
< RELEASE L'ESOACE MEMOIRE :
<
         LAD         RELMEM
         SVC         0               < RETOUR A 4K MOTS.
E40:     EQU         $
         BR          AINTER          < VERS L'INTERROGATION.
<
<
<        O R G U E   E L E C T R O N I Q U E  :
<
<
E2:      EQU         $
         LAD         DEMIN
         SVC         0               < LECTURE DE LA NOTE (0,1,..)
         LBY         REP             < A=NOTE LUE EN ASCI.
<
<        COMMANDES RECONNUES :
<                    'SPACE' : RETOUR A L'INTERROGATION ,
<                    (ET AUTRES CTRL-XXX...)
<                    ! : CHANGEMENT D'OCTAVE (0 A 9) ,
<                    AUTRES CARACTERES <K> SONT TRANSCODES COMME SUI :
<                    '5F-<K>.
<
         CPI         "!"
         JE          E3              < CHANGEMENT D'OCTAVE.
         JL          E40             < VERS L'INTERROGATION UTILISATEUR.
         ADRI        -'5F,A          < TRANSCODAGE.
         NGR         A,A             < ET RETOUR AU POSITIF.
         STA         &ATEMPO         < TRANSMISSION DE LA TEPORISATION
                                     < DE DILATATION DES FREQUENCES.
         LA          ASP
         WORD        '1EC5           < EXECUTION MAITRE DE SP.
         JMP         E2              < NOTE SUIVANTE.
<
< CHANGEMENT D'OCTAVE :
<
E3:      EQU         $
         LAD         DEMIN
         SVC         0               < ENTREE DU NUMERO DE L'OCTAVE.
         LBY         REP             < A=OCTAVE DEMANDE.
         ADRI        -'30,A          < TRANSCODAGE BINAIRE.
         JAL         E40             < ERREUR : OCTAVE NON RECONNU.
         CPI         9
         JG          E40             < ERREUR : OCTAVE NON RECONNU.
         STA         &AOCTAV         < OK , CHANGEMENT DE L'OCTAVE.
         JMP         E2              < VERS LA SUITE DES NOTES ...
         PAGE
<
<
<        E C H A N T I L L O N A G E   M A I T R E   S O N  :
<
<
<        ARGUMENT :
<                    W=@DCT-ESCLAVE ,
<                    OCTAV=OCATVE DESIRE (0,1,2,...) ,
<                    NPER=NBRE DE PERIODES A DECRIRE POUR UN SIGNAL ,
<                    TEMPO=TEMPO DE DILATATION DES FREQUENCES
<                          D'ECHANTILLONAGE.
<                    ASIG=ADRESSE RELATIVE DU DESCRIPTEUR SIGNAL.
<
<
<        FORMAT DU SIGNAL :
<                    MOT0=-NBRE D'ECHANTILLONS PAR PERIODE ,
<                    OCTETS PRECEDENTS=AMPLITUDES D'ECHANTILLONNAGE.
<
<
         LOCAL
LOC1:    EQU         $
NPER:    WORD        0               < NBRE DE FOIS QU'UNE PERIODE EST
                                     < DECRITE POUR UN SIGNAL.
TEMPO:   WORD        0               < TEMPORISATION DE DILATATION
                                     < DES FREQUENCES D'ECHANTILLONAGE.
OCTAV:   WORD        0               < PERMET D'OBTENIR LES OCTAVES
                                     < SUIVANTS D'UNE FREQUENCE :
                                     < 0 : FONDAMENTALE ,
                                     < 1 : 1ER OCTAVE ,...
ASIG:    WORD        0               < ARGUMENT D'APPEL = ADRESSE
                                     < RELATIVE DE LA DESCRIPTION DU
                                     < SIGNAL.
ALECH:   WORD        0               < RELAI INDEX ABSOLU VERS LES
                                     < ECHANTILLONS DU SIGNAL.
CU1:     WORD        WCUS            < ECRITURE SUR LE CU SON.
         PROG
         WORD        LOC1+'80
SP:      EQU         $
         LRP         L
         LA          -1,L            < A=BASE L TRANSLATABLE.
         AD          10,W            < ABSOLUTISATION PAR SLO.
         LR          A,L             < L=BASE L ABSOLUE.
         LA          ASIG            < RECUPERATION DE L'ARGUMENT.
         AD          10,W            < ABSOLUTISATION PAR LE SLO.
         SBT         0               < POSITIONNEMENT DU BIT INDEX.
         STA         ALECH           < MISE EN PLACE DU RELAI DE TRAVAIL
                                     < ABSOLU VERS LE SIGNAL.
         LA          OCTAV
         LR          A,C             < C=OCTAVE DEMANDE.
<
< GENERATION DU SIGNAL :
<
         LXI         0
         LY          &ALECH          < Y=-NBRE D'ECHANTILLONS.
         LX          NPER            < X=DUREE=NBRE DE PERIODES.
SP1:     EQU         $
         LR          X,B             < SAVE LE NBRE DE PERIODES.
<
< GENERATION D'UNE PERIODE :
<
         LR          Y,X             < X=-NBRE D'ECHANTILLONS.
SP2:     EQU         $
         PSR         X               < SAVE X.
         LX          TEMPO           < X=TEMPORISATION DE DILATATION.
         SLLS        0,X             < DECALAGE DE DUREE VARIABLE
                                     < TEMPORISANT L'ECHANTILLONNAGE.
         PLR         X               < RESTAURE X.
         LBY         &ALECH          < A=AMPLITUDE COURANTE D'ECHAN-
                                     < TILLONAGE DU SIGNAL.
         SIO         CU1             < ET ENVOI EN SON SUR CU1.
         ADR         C,X             < PRISE EN COMPTE DE L'OCTAVE.
         JIX         SP2             < VERS L'AMPLITUDES SUIVANTE.
         LR          B,X             < RESTAURE LE NBRE DE PERIODES.
         JDX         SP1             < A LA PERIODE SUIVANTE.
         RSR
         PAGE
<
<
<        I M P L A N T A T I O N  :
<
<
X12:     EQU         ZERO+PILE-LTNI-LTNI
X10:     VAL         X12-$
ZEROV:   EQU         ZERO+X10        < ERREUR D'ASSEMBLAGE SI
                                     < MAUVAISE IMPLANTATION.
         DZS         X10+1           < PROPRETE ...
         EOT         #SIP GEN PROCESSEUR#



Copyright © Jean-François Colonna, 2022-2022.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2022.