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#