Derniers sujets
Discret11
+4
Janpolanton
rené45
dreambox59
Raffou
8 participants
Page 1 sur 4
Page 1 sur 4 • 1, 2, 3, 4
Discret11
Je reposte ici le désassemblage commenté du programme du 68705.
Premières constatations :
Le fichier source a été obtenu avec le désassembleur multi-processeurs DASM et retravaillé avec ajout de commentaires :
La recherche proprement dite.
La redondance du générateur pseudo aléatoire est telle que le bit Y pour une ligne donnée résulte du XOR (ou exclusif) entre les bits Y qui ont engendrés les retards 9 et 11 lignes plus haut dans l'image.
A partir de la dernière ligne échantillonnée, on exécute le XOR entre la valeur binaire d'un échantillon de cette ligne et celle de l'échantillon correspondant 9 lignes plus haut dans l'image. Le résultat est comparé avec l'échantillon 11 lignes plus haut et un compteur est incrémenté si le résultat est positif sinon il est reseté.
Cette opération est réitérée à partir de l'échantillon de la ligne précédente jusqu'à ce que le début de la mémoire de stockage soit atteinte.
Si cette opération est positive 18 fois de suite, on considère que l'on a capturé une transition et le résultat du XOR n'est plus comparé avec l'échantillon 11 lignes plus haut mais est stocké à sa place. Ce qui va permettre de remplacer l'échantillon des lignes plus en avant, qui n'a pas forcément été affecté par la transition verticale, par un bit régénéré à partir de deux autres qui ont été certifiés lors de précédents XOR.
Quand le début de la mémoire de stockage est atteinte :
Si le résultat est négatif, on change de série d'échantillons et on réitère l'opération. Si le résultat est toujours négatif pour les 4 séries d'échantillons, la recherche est poursuivie et un nouvel échantillonnage sera effectué sur la trame zéro du cycle suivant.
Si le résultat est positif, le contenu du générateur pseudo aléatoire est reconstitué à partir des 11 derniers échantillons stockés (régénérés) et le générateur est itéré à l'envers d'un nombre de fois correspondant à celui des lignes omises en début de trame. Le contenu correspond alors à la clef qui est sauvegardée en fonction du niveau d'audience d'appartenance.
Observation: Si cette opération est positive 18 fois de suite (résultat du XOR = 1), on considère que l'on a capturé une transition positive de la luminance et réciproquement si elle est négative 18 fois consécutives (résultat du XOR = 0), on a alors capturé une transition négative.
Conclusion: Le logiciel du 68705 ne prenait en compte que les résultats positifs, donc les transitions positives de la luminance. Avec le même nombre d'échantillons, on aurait multiplié par 2 les chances de retrouver le code initial si l'algorithme du 68705 avait aussi exploité les transitions négatives, cela n'aurait couté que quelques lignes de code supplémentaires.
Premières constatations :
- Un même octet en mémoire RAM peut servir à des variables différentes en fonction du contexte.
- Les pattes de la 9306 sont reliées différemment sur le 68705 par rapport aux différent schémas retrouvés.
- La recherche est initiée par un contact connecté sur la patte 2 "INT/" du 68705. Les 6 clefs sont effacées et un indicateur est positionné (le bit 15 de chaque clef) pour que la recherche s'effectue quand le niveau d'audience correspondant sera employé.
- Comme le 68705 est beaucoup trop lent pour que le programme puisse se synchroniser sur les impulsions ligne, il se synchronise sur les impulsions trame et le cadencement entre les différentes tâches est basé sur le contrôle absolu du nombre de cycles impartis à chacune. La précision de la fréquence de 4 MHz pour le quartz est cruciale car elle détermine une durée de cycle de 1µs sur laquelle repose le synchronisme du programme vis à vis des lignes de chaque trame. Il a donc dû être écrit en assembleur pour s'assurer une telle maitrise qui serait incompatible avec un langage plus évolué comme le langage C.
- Le programme ne connait pas la clef de 16 bits, il recherche et stocke dans la 9306 les clefs des niveaux 1 à 6 sur 11 bits décadrés d'un bit vers la gauche.
Le fichier source a été obtenu avec le désassembleur multi-processeurs DASM et retravaillé avec ajout de commentaires :
- Source 68705.ASM:
;
; Disassembled by:
; DASMx object code disassembler
; (c) Copyright 1996-2003 Conquest Consultants
; Version 1.40 (Oct 18 2003)
;
; File: 68705.bin
;
; Size: 2048 bytes
; Checksum: 1353
; CRC-32: CD511F5A
;
; Date: Sun Feb 01 00:48:54 2015
;
; CPU: Motorola 6805 (6805 family)
;
;*******************************************************************************
; EQUATES
;*******************************************************************************
Clefn7 equ $09CA ; Clef pour niveau 7
R0000 equ 1 ; Retard 0 nul, vidéo en direct
R0902 equ 1 << 1 ; Retard 1 de 902 ns
R1804 equ 1 << 2 ; Retard 2 de 1804 ns
; Les bits X, Y et Z font référence aux articles de Science et Vie n° 808 de
; Janvier 1985 et n° 832 de Janvier 1987
Y0 equ 0 << 3 ; Anticipation valeur bit Y à zéro
Y1 equ 1 << 3 ; Anticipation valeur bit Y à 1
;*******************************************************************************
; 9306 Instruction Set
;*******************************************************************************
READ equ $80 ; READ register
WRITE equ $40 ; WRITE register
ERASE equ $C0 ; ERASE register
EWEN equ $30 ; Erase/Write ENable
EWDS equ $00 ; Erase/Write DiSable
;*******************************************************************************
; I/O Port allocation
;*******************************************************************************
; Configuration des ports
;
; PA0 (20) : Entrée = détection de niveau (1 = noir, 0 = blanc)
; PA1 (21) : Sortie =
; PA2 (22) : Sortie = SK(2) 9306
; PA3 (23) : Sortie = CS(1) 9306
; PA4 (24) : Entrée = DO(4) 9306
; PA5 (25) : Sortie = (+) commutation lente péritel
; PA6 (26) : Sortie = (-) commutation lente péritel + démodulateur audio
; PA7 (27) : Entrée = synchro composite inversée (positive)
; PB0 (12): Entrée = connectée à PC3 (11)
; PB1 (13): Sortie = bit 0 du générateur pseudo-aléatoire
; PB2 (14): Sortie = bit 1 " "
; PB3 (15): Sortie = bit 2 " "
; PB4 (16): Sortie = bit 3 " "
; PB5 (17): Sortie = bit 4 " "
; PB6 (18): Sortie = bit 5 " "
; PB7 (19): Sortie = bit 6 " "
; PC0 ( 8 ) : Sortie = commande retard 0
; PC1 ( 9) : Sortie = commande retard 1 ( 902 ns)
; PC2 (10) : Sortie = commande retard 2 (1804 ns)
; PC3 (11) : Sortie = DI(3) 9306 et PB0 (12)
; TIMER (7) : Entrée = synchro composite inversée (positive)
; INT/ (2) : Entrée = bouton demande recherche de code
;*******************************************************************************
org 0
PortA rmb 1
PortB rmb 1
PortC rmb 1
rmb 1 ; Non utilisé
DDRA rmb 1
DDRB rmb 1
DDRC rmb 1
rmb 1 ; Non utilisé
TDR rmb 1 ; Timer Data Register
TCR rmb 1 ; Timer Control Register
;*******************************************************************************
; RAM allocation (taille 128 octets)
;*******************************************************************************
org $10
X0010 rmb 1 ; 1) n° de registre ciblé dans la 9306
; 2) compteur de paires de lignes retardables
X0011 rmb 1 ; 1) bits D8 à D15 du registre
; 2) compteur de lignes retardables
; 3) paramètre Z : papillotement à 8 Hz
; 4) comptage des lignes noires successives
X0012 rmb 1 ; 1) bits D0 à D7 du même registre
; 2) comptage des motifs D11 successifs
; 3) comptage de lignes en recherche de clef
X0013 rmb 1 ; 1) index sur table des clefs
; 2) cumul états consécutifs des lignes 622
X0014 rmb 1 ; Niveau audience × 2 pour indexer les clefs
X0015 rmb 1 ; Comptage des niveaux d'audience reçus inchangés
X0016 rmb 6*2 ; Table pour clefs niveaux 1 à 7
X0022 rmb 94 ; 1) table des échantillons sur 94 lignes
; 2) clef du niveau 7 (2 octets)
; Les derniers occupent l'espace réservé au stack
X0024 equ X0022+2 ; 1) registre émission/réception 9306
; 2) bits 7 à 10 du générateur pseudo aléatoire
X0025 equ X0022+3 ; Numéro de trame (0 à 5)
;*******************************************************************************
; Page 0 User EPROM (128 octets)
;*******************************************************************************
; Table des retards à appliquer après itération du générateur pseudo aléatoire.
; En fait les retards obtenus sont anticipés car ils correspondent à ceux qui
; dépendent des bits X et Y de l'itération suivante :
; - Les bits 3 à 0 de X0024 et PB7 à PB1 du port B constituent ce générateur
; - Le bit PC3 du port C est lié au bit PB0 du port B, ainsi le futur bit Y écrit
; sur le bit PC3 se retrouvera sur le bit PB1 du port B après décalage.
; - La table est adressée par :
; 1) le bit Z stocké en X0022
; 2) le prochain bit Y qui résulte du XOR entre bits 3 et 1 de X0024
; 3) le bit 2 de X0024 qui va devenir le bit X suivant
; - De cette table est extraite une ligne comportant le bit Y qui va entrer dans
; le générateur par la droite à sa prochaine itération ainsi que le nouveau
; retard qui en résultera
org $0080
X0080:
fcb R1804 + Y0, R0000 + Y0, R0000 + Y1, R1804 + Y1
fcb R0902 + Y0, R1804 + Y0, R0000 + Y1, R0902 + Y1
fcb R0000 + Y1, R1804 + Y1, R1804 + Y0, R0000 + Y0
fcb R0000 + Y1, R0902 + Y1, R0902 + Y0, R1804 + Y0
; Table de motifs pour 3 cycles Discret 11 à rechercher sur les lignes 310
X0090:
fcb $01, $00, $00
fcb $01, $00, $00
fcb $01, $00, $00
;*******************************************************************************
; Main User EPROM (1668 Octets)
;*******************************************************************************
org $0100
L0100:
sei ; Enable Interrupt
lda #100 ; 100 boucles
L0103:
jsr L0564 ; Temporisation de 1 ms
deca
bne L0103 ; 100 × 1 ms = 100 ms
lda #%01101100 ; PA : 76543210
sta DDRA ; E/S : ESSESSEE
lda #%11111110 ; PB : 76543210
sta DDRB ; E/S : SSSSSSSE
lda #%11111111 ; PC : 76543210
sta DDRC ; E/S : SSSSSSSS
lda #%01000000 ; Commutation lente désactivée
sta PortA
lda #R1804 ; Sélection retard 2
sta PortC
bil L0145 ; Branch si patte INT/ (2) à zéro
;*******************************************************************************
; Lecture des 6 premiers registres de la 9306
; Sauvegarde dans la table des clefs (6 × 2) en RAM_16
;*******************************************************************************
L011F:
clr X0010 ; RaZ n° de registre 9306
clr X0011 ; RaZ bits D16 à D8 d'un registre
clr X0012 ; RaZ bits D7 à D0 du même registre
clr X0013 ; RaZ index sur la table des clefs
L0127:
jsr L05F7
ldx X0013 ; Récupération de l'index
lda X0011 ; Bits D16 à D8 lus dans le registre
sta X0016,x ; Octet supérieur de la clef
incx ; Ligne suivante de la table
lda X0012 ; Bits D7 à D0 lus dans le registre
sta X0016,x ; Octet inférieur de la clef
incx ; Ligne suivante de la table
stx X0013 ; Sauvegarde de l'index
jsr L0564 ; Temporisation intermédiaire de 1 ms
inc X0010 ; Registre suivant dans la 9306
lda X0010
cmp #6 ; Ont-ils été lus tous les 6 ?
bcs L0127 ; Réitération pour lire le registre suivant
bra L0169
;*******************************************************************************
; Demande de recherche des clefs activée (patte INT/ (2) mise à zéro)
;*******************************************************************************
L0145:
lda #10 ; 10 boucles
L0147:
jsr L0564 ; Temporisation de 1 ms
deca
bne L0147 ; 10 × 1 ms = présomption de 10 ms
;*******************************************************************************
; Réinitialisation de la table des clefs suite à la demande de recherche
;*******************************************************************************
bih L011F ; Parasite si INT/ (2) est retourné à 1
lda #$80 ; bit 15 = 1 : clef à rechercher
sta X0016 ; Initialisation octet supérieur clef niveau 1
sta X0016+2 ; Idem niveau 2
sta X0016+4 ; Idem niveau 3
sta X0016+6 ; Idem niveau 4
sta X0016+8 ; Idem niveau 5
sta X0016+10 ; Idem niveau 6
clr X0016+1 ; RaZ octet inférieur clef niveau 1
clr X0016+3 ; Idem niveau 2
clr X0016+5 ; Idem niveau 3
clr X0016+7 ; Idem niveau 4
clr X0016+9 ; Idem niveau 5
clr X0016+11 ; Idem niveau 6
;*******************************************************************************
; Initialisation de la dernière ligne de la table avec la clef du niveau 7
; - à noter que cette ligne empiète sur la table des échantillons
;*******************************************************************************
L0169:
lda #7*2 ; Table de 7 clefs sur 2 octets
sta X0014
lda #Clefn7/256 ; Octet supérieur clef niveau 7
sta X0016+12
lda #Clefn7%256 ; Octet supérieur clef niveau 7
sta X0016+13
clr X0015
clr X0025 ; Numéro de trame à zéro
L0179:
nop
L017A:
lda #%01000000 ; Inhibition démodulateur audio
sta PortA
L017E:
jsr L0199 ; Recherche de synchronisation cycle Discret 11
; Ligne 310 + (53 ± 4 µs) atteinte
lda X0013 ; Cumul états consécutifs des lignes 622
lsra
lsra
lsra ; Cadrage à droite des états du cycle précédent
ora X0013
eor #%11111111 ; Chaque bit avait été inversé par le détecteur
and #%00000111 ; Uniquement les bits utiles des deux niveaux
beq L017A ; Les niveaux doivent être identiques et non nul
lda #%00100000 ; Validation du (+) commutation lente
sta PortA
lda #1
sta X0012 ; Le nombre de motifs reconnus est minoré à 1
jmp L01E5 ; Synchronisation en début du cycle suivant
;*******************************************************************************
; Recherche d'un motif Discret 11 stable sur les lignes 310 des trames impaires
; - table des motifs en L0090
; - débute par la recherche dune ligne 310 à 1 (blanche)
; - cycle Discret 11 reconnu si 3 motifs successifs OK
;*******************************************************************************
L0199:
lda #9 ; Le motif doit être reconnu 3 fois consécutives
sta X0012 ; Compteur bits exacts sur motif lignes 310
lda #7*2 ; Table de 7 clefs sur 2 octets
sta X0014
clr X0015
L01A3:
jsr L04B4 ; 8 µs : attente prochaine synchronisation trame
; Début de la ligne 1 (18 ± 4 µs)
ldx #154 ; 2 µs : délai de 1542 µs soit (24 × 64) + 6 µs
L01A8:
decx ; 4 µs
nop ; 2 µs
bne L01A8 ; 4 µs : ligne 25 atteinte en fin de délai
; Fin de la période de suppression trame avec la ligne 25 atteinte (24 ± 4 µs)
; Déroulement d'un bloc de 284 lignes visibles avec quasi complétion de la dernière
lda #284/256 ; 2 µs : initialisation du compteur à 284 lignes
sta X0011 ; 5 µs
lda #284%256 ; 2 µs
sta X0010 ; 5 µs : ici ligne 25 + (38 ± 4 µs)
jsr L04C5 ; 8 µs : Attente défilement de 284 lignes
; Fin de ligne 309 atteinte (60 ± 4 µs)
ldx X0012 ; 4 µs : compteur bits exacts sur motif lignes 310
lda X0090,x ; 5 µs : Indexation dans table des motifs Discret 11
bne L01C9 ; 4 µs : branch si niveau du blanc attendu
; Ligne 310 atteinte (60 ± 4 + 13 > 64 µs équivaut à 9 ± 4 µs)
; Trois échantillonnages de la ligne 310 : niveau du noir attendu = 1 logique
brclr 0,PortA,L0199 ; 10 µs : boucle si niveau du blanc détecté (0)
brclr 0,PortA,L0199 ; 10 µs : Idem
brclr 0,PortA,L0199 ; 10 µs : Idem
jmp L01D2 ; 4 µs
; Deux échantillonnages ligne 310 : niveau du blanc attendu = 0 logique
L01C9:
brset 0,PortA,L0199 ; 10 µs : boucle si niveau du noir détecté (1)
clr X0025 ; 6 µs : numéro de trame à zéro
lda ,x ; 4 µs : instruction de bourrage, 6 + 4 = 10 µs
brset 0,PortA,L0199 ; 10 µs : boucle si niveau du noir détecté (1)
; Traitement quand le niveau détecté est bien celui attendu (39 ± 4 ou 43 ± 4 µs)
L01D2:
lda X0012 ; 4 µs : compteur bits exacts sur motif lignes 310
beq L01DD ; 4 µs : cycle Discret 11 détecté
jsr L04DB ; 8 µs : déroulement trame paire de la même image
dec X0012 ; 6 µs
bra L01A3 ; 4 µs : la recherche continue
L01DD:
rts ; 6 µs
; Retour en ligne 310 + (57 ± 4 µs) car la dernière des 3 motifs est noire
;*******************************************************************************
; Synchronisation sur la 1ère impulsion ligne reçue
; - le compteur (TDR) reçoit l'impulsion de synchronisation composite sur son
; entrée TIMER (7)
; - entre 6 et 14 µs absorbées depuis l'apparition de l'impulsion soit 10 ± 4 µs
;*******************************************************************************
L01DE:
lda TDR ; 4 µs : lecture du compteur matériel
L01E0:
cmp TDR ; 4 µs : évolue à chaque impulsion de synchronisation
beq L01E0 ; 4 µs : attente d'une évolution de ce compteur
rts ; 6 µs : retour 10 ± 4 µs après début impulsion
;*******************************************************************************
; Rechargement du générateur pseudo aléatoire pour la première trame du cycle
;*******************************************************************************
L01E5:
clr X0011 ; 6 µs : paramêtre Z à zéro
L01E7:
nop ; 2 µs
ldx X0014 ; 4 µs : niveau d'audience × 2
beq L0179 ; 4 µs : L0179 si niveau zéro
lda X0016-1,x ; 5 µs : l'index 0 correspond au niveau d'audience 0
sta PortB ; 5 µs : bits 0 à 6 du générateur pseudo aléatoire
lda X0016-2,x ; 5 µs : indexation octet supérieur de la clef
bpl L01F7 ; 4 µs
jmp L02E4 ; 4 µs : clef à rechercher si bit 4 à 10
;
L01F7:
sta X0024 ; 5 µs : bits 0 à 3 du générateur
tax ; 2 µs
lda X0080,x ; 5 µs ; obtention du prochain retard
and #%00001000 ; 2 µs : prochain bit Y issu du XOR entre bits 0 et 2
ora [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : sélection retard 2
tax ; 2 µs : sauvegarde temporaire
;*******************************************************************************
; Mise place des retards sur un bloc de 286 lignes
;*******************************************************************************
L0201:
lda #%00100100 ; 2 µs : impulsion sur SK (2) de la 9306
sta PortA ; 5 µs
lda #%00100000 ; 2 µs : commutation lente activée
sta PortA ; 5 µs
jsr L04B4 ; 8 µs : attente synchronisation trame
; Début de la ligne 1 (18 ± 4 µs) ou fin de la ligne 313 (50 ± 4 µs)
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : Délai de 1402 µs (21 lignes + 58 µs)
L020E:
deca ; 4 µs
bne L020E ; 4 µs
; Trame impaire : ligne 22 + (18 ± 4 + 58 µs) = ligne 23 + (12 ± 4 µs)
; Trame paire : ligne 334 + (50 ± 4 + 58 µs) = ligne 335 + (44 ± 4 µs)
lda [Vous devez être inscrit et connecté pour voir ce lien]/2 ; 2 µs : nombre de paires de lignes retardables
sta X0010 ; 5 µs
txa ; 2 µs
and #%00001000 ; 2 µs ; prochain bit Y issu du XOR entre bits 0 et 2
ora [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : sélection retard 2
sta PortC ; 5 µs
lda X0025 ; 4 µs : n° de trame dans le cycle
; Trame impaire : ligne 23 + (12 ± 4 + 22 µs) = ligne 23 + (34 ± 4 µs)
; Trame paire : ligne 335 + (44 ± 4 + 22 µs) = ligne 336 + (2 ± 4 µs)
beq L0231 ; 4 µs : pas d'itération si trame zéro du cycle
asl PortB ; 6 µs : itération du générateur
rol X0024 ; 6 µs : propagation sur les autres bits
lda X0024 ; 4 µs
and #%00001110 ; 2 µs : oblitération des bits inutiles
tax ; 2 µs
lda X0080,x ; 5 µs ; obtention du retard approprié
and #%00001000 ; 2 µs : prochain bit Y issu du XOR entre bits 0 et 2
ora [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : sélection retard 2
sta PortC ; 5 µs
; Trame impaire : ligne 23 + (34 ± 4 + 38 µs) = ligne 24 + (8 ± 4 µs)
; Trame paire : ligne 336 + (2 ± 4 + 38 µs) = ligne 336 + (40 ± 4 µs)
; Trame zéro : ligne 336 + (2 ± 4 µs)
L0231:
jsr >L01DE ; 8 µs : attente impulsion ligne 25/337 (10 ± 4 µs)
nop ; 2 µs
nop ; 2 µs
nop ; 2 µs
jmp L025C ; 4 µs : traitement 1ère ligne impaire à 20 ± 4 µs
;*******************************************************************************
; Suppression trame pendant la transition lignes paires vers impaires
; Durée totale 66 ± 1 µs pour adapter la fréquence ligne à celle du quartz 4 MHz
; l'ajustage permet aussi à la longue d'éliminer l'incertitude à ± 4 µs
;*******************************************************************************
; Début ligne paire + 18 µs
L023A:
asl PortB ; 6 µs : itération du générateur
rol X0024 ; 6 µs : propagation sur les autres bits
nop ; 2 µs
lda X0024 ; 4 µs
and #%00001110 ; 2 µs : oblitération des bits inutiles
add X0011 ; 4 µs : concaténation avec paramètre Z
tax ; 2 µs
ldx X0080,x ; 5 µs ; obtention du retard approprié
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : sélection retard 2
sta PortC ; 5 µs
; Début palier suppression ligne à (18 + 38 µs) = 56 µs
nop ; 2 µs
lda >PortA ; 5 µs : test présence impulsion ligne à 61 µs
stx PortC ; 5 µs
; Fin du palier à (56 + 12 µs) = ligne suivante à 4 µs
nop ; 2 µs
sta L0100-1 ; 5 µs : pour actualiser bits N et Z du CCR
bmi L0259 ; 4 µs
bra L025C ; 4 µs : pas d'ajustement (+ 15 µs)
; Ajustement (+ 2 µs) si impulsion ligne en avance
L0259:
nop ; 2 µs : ajustement si impulsion ligne en avance
nop ; 2 µs
nop ; 2 µs : ajustage (+ 17 µs)
; Durée d'éxécution ajustée à 66 ± 1 µs selon cadrage impulsion ligne
;*******************************************************************************
; Suppression trame pendant la transition lignes impaires vers paires
; Durée totale 62 µs
;*******************************************************************************
; Début ligne 20 ± 4 µs pour la 1ère ligne et ensuite 20 ± 1 µs selon ajustage
L025C:
asl PortB ; 6 µs : itération du générateur
rol X0024 ; 6 µs : propagation sur les autres bits
lda X0024 ; 4 µs
and #%00001110 ; 2 µs : oblitération des bits inutiles
add X0011 ; 4 µs : concaténation avec paramètre Z
tax ; 2 µs
ldx X0080,x ; 5 µs ; obtention du retard approprié
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : sélection retard 2
sta PortC ; 5 µs
; Début palier suppression ligne à (20 + 36 µs) = 56 µs
nop ; 2 µs
lda >PortA ; 5 µs : pour bourrage de 5 µs
stx PortC ; 5 µs : mise en place du retard approprié
; Fin du palier à (56 + 12 µs) = ligne suivante à 4 µs
dec X0010 ; 6 µs : nombre de paires de lignes
nop ; 2 µs
nop ; 2 µs
bne L023A ; 4 µs : total 4 ± 4 + 14 µs = 18 ± 4 µs
; Durée d'éxécution totale = 62 µs
;*******************************************************************************
; Période de suppression trame, les timing ne sont pas cruciaux
;*******************************************************************************
; Traitement des lignes 310/633 à 18 µs
lda PortA ; Test sur la détection du niveau du blanc
lsra
rol X0013 ; état ligne 310 ajouté au cumul des lignes 622
ldx PortC
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Sélection retard 2
sta PortC
inc X0025 ; Incrément du numéro de trame
lda X0025
cmp [Vous devez être inscrit et connecté pour voir ce lien] ; Test si quatrième trame du cycle
bne L028E
inc X0011 ; Paramètre Z à 1
L028E:
cmp [Vous devez être inscrit et connecté pour voir ce lien] ; N° de la dernière trame du cycle
bcs L029A ; Branch si n° trame < 5
bne L02A4 ; Fin de cycle si n° trame > 5
jsr L02C3 ; Calcul niveau d'audience si trame n° 5
jmp L0201 ; Rebouclage vers traitement du nouveau cycle
;*******************************************************************************
; Fin de trame avec le n° < 5
;*******************************************************************************
L029A:
lda X0025 ; N° de la trame
lsra ; Pour différencier les trames paires/impaires
bcs L02A1
; La trame était impaire, inutile de conserver l'état de la ligne 310
lsr X0013 ; Etat ligne 310 intrus parmis ceux des lignes 622
L02A1:
jmp L0201 ; Rebouclage vers traitement de la nouvelle trame
;*******************************************************************************
; Fin du cycle si n° trame > 5 (= 6)
;*******************************************************************************
L02A4:
clr X0025 ; Nouveau cycle avec n° de trame à zéro
clr X0011 ; Paramètre Z à zéro
brset 4,PortA,L02AE ; PA4 : DO(4) de la 9306
jmp L052F ; Vers sauvegarde clefs dans 9306
;*******************************************************************************
; Contrôle de synchronisation sur le cycle Discret 11
;*******************************************************************************
L02AE:
ror X0013 ; Récupération état de la ligne 310
bcs L02B9 ; Erreur si niveau du noir
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Rechargement compteur si niveau du blanc
sta X0012
jmp L01E7 ; Rechargement du générateur pour le cycle suivant
;
L02B9:
dec X0012 ; Décrémentation si niveau du noir
bmi L02C0 ; Branch si désynchronisation
jmp L01E7 ; Rechargement du générateur pour le cycle suivant
L02C0:
jmp L017A ; Resynchronisation sur le cycle Discret 11
;*******************************************************************************
; Calcul du niveau d'audience
;*******************************************************************************
L02C3:
nop
lda X0013 ; Cumul états consécutifs des lignes 622
asla
asla
asla ; Cadrage 3 derniers reçus au niveau des précédents
eor X0013 ; Comparaison avec ceux du cycle précédent
and #%00111000 ; Seulement le résultat sur les bits comparés
bne L02E1 ; Branch si états différents
inc X0015 ; Comptage des états stables
lda X0015
cmp [Vous devez être inscrit et connecté pour voir ce lien] ; Test si 8 états stables successifs
bne L02E0
lda X0013 ; Cumul états consécutifs des lignes 622
and #%00000111 ; Niveau d'audience = état des 3 dernières lignes
eor #%00000111 ; Le détecteur de niveau avait inversé les états
asla ; Niveau d'audience × 2 = index table des clefs
sta X0014 ; Sauvegarde de l'index
L02E0:
rts
L02E1:
clr X0015 ; RaZ du comptage des états stables
rts
;*******************************************************************************
; Initialisation de la recherche automatique
; - l'échantillonnage débute trame zéro en ligne 385 pour éviter la bande noire
; au dessus des films en cinémascope et n'est effectué que sur 94 lignes pour
; une question de taille mémoire disponible
;*******************************************************************************
L02E4:
ldx X0014
bne L02EB ; Branch si niveau autre que zéro
jmp L0179 ; Resynchronisation sur le cycle Discret 11
;
L02EB:
lda #%00100000 ; Commutation lente péritel à ON
sta PortA
jsr L04B4 ; Attente prochaine synchronisation trame
; Fin de la ligne 313 (50 ± 4 µs) de la trame zéro du cycle
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : Délai de 1412 µs soit 22 lignes
L02F4:
deca ; 4 µs
bne L02F4 ; 4 µs
nop ; 2 µs
; Fin de période de suppression trame, fin ligne 335 (50 ± 4 µs)
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : lignes ignorées (bande noire film cinémascope)
sta X0010 ; 5 µs
clr X0011 ; 6 µs
; Exécution de L04C5 début ligne 336, (50 ± 4 + 21) > 64 µs équivaut à (7 ± 4 µs)
jsr L04C5 ; 8 µs : Attente défilement de ces 48 lignes
; Fin de ligne 384 atteinte 60 ± 4 µs
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : sélection retard 2
stx PortC ; 5 µs
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : table de rangement des échantillons
; Exécution de L01DE ligne 384, (7 ± 4 + 17 µs) = 24 ± 4 µs
jsr L01DE ; 8 µs : attente de la prochaine impulsion ligne
; Ligne 385 atteinte (10 ± 4 µs)
;*******************************************************************************
; Echantillonnage des lignes
; - table de rangement des échantillons en X0022, 94 lignes de 4 bits
; - un échantillon toutes les 14 µs, 4 échantillons par ligne
;*******************************************************************************
; 10 ± 4 µs déjà écoulées depuis l'apparition de la dernière impulsion ligne
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : temporisation de 58 µs
L030C:
deca ; 4 µs
bne L030C ; 4 µs
; 68 ± 4 µs (1 ligne à 1 ligne + 8 µs) d'absorbées après cette temporisation
; Le premier échantillon sera prélevé à 8 µs ± 4 du début de la ligne suivante
; Le deuxième sera prélevé à 22 µs ± 4
; Le troisième a 36 µs ± 4
; Le quatrième et dernier à 50 µs ± 4
L030F:
lda PortA ; 4 µs : bit 0 = état du niveau du blanc
lsra ; 4 µs : cet état est poussé dans carry
rol ,x ; 6 µs : cet état entre par la droite
lda PortA ; 4 µs : idem pour 2ème échantillon
lsra ; 4 µs
rol ,x ; 6 µs
lda PortA ; 4 µs : idem pour 3éme échantillon
lsra ; 4 µs
rol ,x ; 6 µs
lda PortA ; 4 µs : idem pour 4ème échantillon
lsra ; 4 µs
rol ,x ; 6 µs : les 4 échantillons sont cadrés à droite
incx ; 4 µs : échantillonnage de la ligne suivante
bpl L030F ; 4 µs : fin de RAM utilisateur si adresse >= $80
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 140 lignes à laisser défiler
sta X0010
clr X0011
jsr L04C5 ; Attente défilement de ces 140 lignes
nop ; Temporisation de 11 × 2 = 22 µs
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lda PortA ; Echantillonage au milieu de la ligne 622
lsra
rol X0013 ; Cumul états consécutifs des lignes 622
;*******************************************************************************
; Selon la table des retards pour les trois premières trames (Z = 0) il résulte
; que le retard 2 ne dépend que du paramètre ou bit Y :
; - Y = 0 : retard 0 ou 1 donc retard différent de 2
; - Y = 1 : retard 2 quelque soit X
; La recherche va donc être basée sur la détection d'une transition verticale
; qui surviendrait au moment d'un des 4 échantillonnages. Le niveau en sortie du
; détecteur de ligne blanche sera à ce moment là le reflet du bit Y.
; Etant donné la redondance du générateur pseudo aléatoire le bit Y pour une
; ligne donnée résulte du XOR entre les bits Y qui ont engendrés les retards 9
; et 11 lignes plus haut dans l'image. La recherche va donc consister à vérifier
; que le résultat du XOR entre 2 des niveaux logiques issus du détecteur est
; égal au troisième. Cette recherche doit être fructueuse sur un ensemble de
; 18 lignes consécutives pour qu'elle soit validée
;*******************************************************************************
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Recherche sur la série des 2 derniers échantillonnages
sta X0010
jsr L04B4 ; Attente apparition synchronisation trame
rsp ; Stack sur dernière octet de la RAM
L0343:
nop
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Le résultat du XOR doit être vérifié sur 18 lignes
sta X0012
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; Recherche descendante à partir de la fin de table
L034A:
lda X0022+11,x ; Niveau détecté 11 lignes plus en arrière
and #%00000001 ; Oblitération des bits inutiles
beq L0354 ; Branch si détection d'un niveau blanc
clr X0011 ; Raz compteur de lignes blanches
bra L0356
;
L0354:
inc X0011 ; Comptage des lignes blanches successives
L0356:
eor X0022+2,x ; Premier XOR avec niveau détecté 2 lignes en arrière
tst X0012
bne L035F ; Branch s'il reste d'autres tests à effectuer
jmp L0423 ; Algorithme OK sur un bloc de 18 lignes
;
L035F:
eor X0022+0,x ; Comparaison du XOR avec niveau de la ligne initiale
lsra ; Résultat de la comparaison dans Carry
bcc L0368 ; Branch si nul donc test OK
lda [Vous devez être inscrit et connecté pour voir ce lien]+1 ; Rechargement du compteur de tests si NOK
sta X0012
L0368:
dec X0012 ; Nombre de tests OK encore nécessaires
lsr X0022+11,x ; Elimination du bit testé
decx ; La ligne précédente devient la ligne initiale
bne L034A ; Si début mémoire des échantillons non atteint
dec X0010
bne L0343 ; bouclage sur 2ème série si recherche négative
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Encore 100 lignes à absorber avant fin de trame
sta X0010
clr X0011
jsr L04C5 ; Attente fin déroulement de ces 100 lignes
jsr L04DB ; Effet visuel sur l'écran pendant la recherche
;
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Recherche sur la série des 2 premiers échantillonnages
sta X0010
jsr L04B4 ; Attente apparition prochaine synchronisation trame
rsp ; Stack sur dernière octet de la RAM
L0387:
nop
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Le résultat du XOR doit être vérifié sur 18 lignes
sta X0012
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; Recherche descendante à partir de la fin de table
L038E:
lda X0022+11,x ; Niveau détecté 11 lignes plus en arrière
and #%00000001 ; Oblitération des bits inutiles
beq L0398 ; Branch si détection d'un niveau blanc
clr X0011 ; Raz compteur de lignes blanches
bra L039A
;
L0398:
inc X0011 ; Comptage des lignes blanches successives
L039A:
eor X0022+2,x ; Premier XOR avec niveau détécté 2 lignes en arrière
tst X0012 ; Branch s'il reste d'autres tests à effectuer
beq L0412 ; Branch si les 18 test concécutifs sont OK
L03A0:
eor X0022+0,x ; Comparaison du XOR avec niveau de la ligne initiale
lsra ; Résultat de la comparaison dans Carry
bcc L03A9
lda [Vous devez être inscrit et connecté pour voir ce lien]+1 ; Rechargement du compteur de tests si NOK
sta X0012
L03A9:
dec X0012 ; Nombre de tests OK encore nécessaires
lsr X0022+11,x ; Elimination du bit testé
decx ; La ligne précédente devient la ligne initiale
bne L038E ; Si début mémoire des échantillons non atteint
dec X0010
bne L0387 ; bouclage sur 2ème série si recherche négative
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Encore 100 lignes à absorber avant fin de trame
sta X0010
clr X0011
jsr L04C5 ; Attente fin déroulement de ces 100 lignes
jsr L04DB ; Effet visuel sur l'écran pendant la recherche
jsr L04B4 ; Attente apparition prochaine synchronisation trame
;*******************************************************************************
; Calcul du niveau d'audience
;*******************************************************************************
lda X0013 ; Cumul états consécutifs des lignes 622
asla
asla
asla ; Cadrage 3 derniers reçus au niveau des précédents
eor X0013 ; Comparaison avec ceux du cycle précédent
and #%00111000 ; Seulement le résultat sur les bits comparés
beq L040C ; Recherche de clef si états différents
inc X0015 ; Comptage des états stables
lda X0015
cmp [Vous devez être inscrit et connecté pour voir ce lien] ; Test si 8 états stables successifs
bne L03F3
lda X0013 ; Cumul états consécutifs des lignes 622
and #%00000111 ; Niveau d'audience = état des 3 dernières lignes
eor #%00000111 ; Le détecteur de niveau avait inversé les états
asla ; Niveau d'audience × 2 = index table des clefs
sta X0014 ; Sauvegarde de l'index
lda [Vous devez être inscrit et connecté pour voir ce lien]/256 ; Octet supérieur clef niveau 7
sta X0016+12
lda [Vous devez être inscrit et connecté pour voir ce lien]%256 ; Octet inférieur clef niveau 7
sta X0016+13
jmp L03EF
;*******************************************************************************
; 3 instructions inutilisées
;*******************************************************************************
L03EA:
clr X0015
ldx #$97
nop
;*******************************************************************************
; Attente défilement de la trame suivante
;*******************************************************************************
L03EF:
nop ; 2 µs
nop ; 2 µs
bra L03F5 ; 4 µs
;
L03F3:
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : délai de 1502 µs soit 23 lignes
L03F5:
decx ; 4 µs
nop ; 2 µs
bne L03F5 ; 4 µs : total 1510 µs depuis L03EF
lda [Vous devez être inscrit et connecté pour voir ce lien]/256 ; Absorption de 284 lignes
sta X0011
lda [Vous devez être inscrit et connecté pour voir ce lien]%256
sta X0010
jsr L04C5 ; Attente déroulement de ces 284 lignes
nop ; Délai de 10 µs
nop
nop
nop
nop
bra L040F ; 4 µs
;
clra
;
L040C:
jmp L02EB ; 4 µs : Recherche automatique de clef
L040F:
jmp L017E ; 4 µs : resynchronisation sur cycle Discret 11
;*******************************************************************************
; Algorithme reconnu parmi une des deux dernières séries d'échantillons
;*******************************************************************************
L0412:
lda X0011 ; Nombre de lignes consécutives au niveau blanc
cmp [Vous devez être inscrit et connecté pour voir ce lien]
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Rechargement compteur de tests OK
sta X0012
lda X0022+11,x
eor X0022+2,x ; Réitération du dernier XOR
bcc L03A0 ; Rebouclage car trop de niveaux blancs consécutifs
jmp L0434
;*******************************************************************************
; Algorithme reconnu parmi une des deux premières séries d'échantillons
;*******************************************************************************
L0423:
lda X0011 ; Nombre de lignes consécutives au niveau blanc
cmp [Vous devez être inscrit et connecté pour voir ce lien]
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Rechargement compteur de tests OK
sta X0012
lda X0022+11,x
eor X0022+2,x ; Réitération du dernier XOR
bcs L0434
jmp L035F ; Rebouclage car trop de niveaux blancs consécutifs
;*******************************************************************************
; Algoritmme reconnu sur 18 lignes consécutives
; - La table est parcourue ligne par ligne jusqu'à la première en écrivant le
; résultat du XOR obtenu à partir des bits/retards certifiés
;*******************************************************************************
L0434:
lda X0022+11,x
eor X0022+2,x
sta X0022+0,x ; Ecriture résultat du XOR
decx
bne L0434 ; La table est parcourue jusqu'à sa première ligne
;*******************************************************************************
; La première ligne de la table étant atteinte, il faut reconstituer le contenu
; du générateur pseudo aléatoire qui lui correspond
; - accumulation des 3 bits de gauche dans X0010
; - accumulation des 8 autres bits dans X0011
;*******************************************************************************
clr X0010 ; Octet supérieur du contenu
clr X0011 ; Octet inférieur
lda X0022+1 ; Accumulation des 3 bits de gauche
lsra
rol X0010
lda X0022+2
lsra
rol X0010
lda X0022+3
lsra
rol X0010
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; Index à zéro
L0452:
lda X0022+4,x ; Obtention d'un des 8 bits
lsra
rol X0011 ; Accumulation
incx
cpx [Vous devez être inscrit et connecté pour voir ce lien]
bne L0452 ; Réitération jusqu'à 8
;*******************************************************************************
; Le contenu ayant été reconstitué, il faut maintenant faire itérer le générateur
; speudo aléatoire à contre sens d'une quantité égale au nombre de lignes omises
; depuis la suppression trame
;*******************************************************************************
ldx [Vous devez être inscrit et connecté pour voir ce lien]
L045E:
lda X0011 ; Octet de droite
asla
eor X0010 ; C'est le XOR entre bits 2 et 10 qui importe
asla
asla
and #%00001000 ; Le XOR entre bits 2 et 10 génère le nouveau bit
add X0010 ; Bit 3 de X0010 nul suite décalage précédent
sta X0010
lsr X0010 ; Ce bit doit entrer par la gauche dans le générateur
ror X0011 ; Décalage des autres bits
decx
bne L045E ; Exécution des itérations inverses nécessaires
asl X0011
rol X0010 ; Le générateur réel est décadré d'un bit à gauche
ldx X0014 ; Index dans la table
lda X0011
cmp X0016-1,x ; Test si nouvelle clef identique à l'ancienne
beq L0480
bset 7,X0010
L0480:
sta X0016-1,x ; Octet inférieur de la clef
lda X0010
sta X0016-2,x ; Octet supérieur de la clef
lda X0011
lsr X0010 ; Décalage à droite de 3 pas de la clef
rora
lsr X0010
rora
lsr X0010
rora
and #%11111110 ; Oblitération du bit non commun aux 2 clefs
cmp X0016+1,x ; Comparaison bits communs avec ceux du niveau supérieur
bne L04A1
sta X0011 ; Sauvegarde temporaire
lda X0016-2,x
and #%00001111 ; Oblitération des bits inutiles de l'octet supérieur
sta X0016-2,x
lda X0011 ; Récupération
L04A1:
tst X0016+1,x
bne L04A7 ; Branch si clef du niveau supérieur déjà connue
sta X0016+1,x ; Sauvegarde des bits commun aux 2 clefs
L04A7:
ldx X0014,x
lda [Vous devez être inscrit et connecté pour voir ce lien]/256 ; Octet supérieur de la clef niveau 7
sta X0016+12
lda [Vous devez être inscrit et connecté pour voir ce lien]%256 ; Octet inférieur
sta X0016+13
jmp L017A ; Resynchronisation sur le cycle Discret 11
;*******************************************************************************
; Attente de la prochaine impulsion de synchronisation trame
; - les impulsions sont positives car inversées par le transistor extracteur
; - toute impulsion positive supérieure à 12 ± 4 µs est considérée comme
; impulsion de synchronisation trame (durée 160 µs soit 2,5 lignes)).
; - les impulsions de synchronisation ligne (4,7 µs) et d'égalisation (2,35 µs)
; sont ignorées quelque soit leur polarité.
; - retour en début de la ligne 1 (18 ± 4 µs) ou en seconde moitié de la
; ligne 313 (32 + 18 = 50 ± 4 µs).
;*******************************************************************************
L04B4:
lda PortA ; 4 µs
bmi L04B4 ; 4 µs : attente disparition impulsion quelconque
lda PortA ; 4 µs
bmi L04B4 ; 4 µs : filtre les disparitions inférieures à 8 µs
L04BC:
lda PortA ; 4 µs
bpl L04BC ; 4 µs : attente apparition impulsion quelconque
lda PortA ; 4 µs
bpl L04BC ; 4 µs : rejette les impulsions inférieures à 8 µs
rts ; 6 µs : retour 18 ± 4 µs après apparition
;*******************************************************************************
; Attente défilement d'un nombre de lignes déterminés avec quasi complétion
; de la toute dernière :
; - nombre de ligne sur 16 bits : X0011 octet supérieur, X0010 octet inférieur
; - le compteur matériel (TDR) reçoit l'impulsion de synchronisation composite
; sur son entrée TIMER (7). Le compteur de lignes est décrémenté à chaque
; évolution du compteur du compteur matériel (TDR)
; - absorpsion terminale de 60 ± 4 µs pour quasi complétion de la dernière ligne
;*******************************************************************************
L04C5:
lda TDR ; 4 µs : lecture du compteur matériel
L04C7:
cmp TDR ; 4 µs : évolue à chaque impulsion de synchronisation
beq L04C7 ; 4 µs : test toutes les 8 µs
; La sortie de boucle s'effectue donc 4 ± 4 µs après une impulsion de synchronisation
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs + 3 boucles totalisant 26 µs
L04CD:
deca ; 4 µs
bne L04CD ; 4 µs
lda TDR ; 4 µs : relecture du compteur matériel
dec X0010 ; 6 µs : décrémentation du compteur logiciel
bne L04C7 ; 4 µs
dec X0011 ; 6 µs : propagation de la retenue
bpl L04C7 ; 4 µs : sortie sur valeur inférieure à zéro
rts ; 6 µs : 56 µs absorbées depuis la sortie de boucle
;*******************************************************************************
; Déroulement d'une trame paire en recherche de clef
; - Mise en place d'un effet visuel pendant 94 lignes de cette trame
;*******************************************************************************
L04DB:
jsr L04B4 ; Attente prochaine synchronisation trame
; Fin de ligne 313 atteinte (50 ± 4 µs)
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : délai de 1410 µs (22 lignes + 2 µs)
L04E0:
deca ; 4 µs
bne L04E0 ; 4 µs
; Fin de la période de suppression trame avec la ligne 335 atteinte (52 ± 4 µs)
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : attente déroulement de 48 lignes
sta X0010 ; 5 µs
clr X0011 ; 6 µs : octet supérieur nul
; Ligne 336 atteinte (65 ± 4 + 8 > 64 µs) avant comptage des 48 nouvelles en L04C5
jsr L04C5 ; 8 µs : attente déroulement des 48 lignes
; Fin de ligne 384 atteinte (60 ± 4 µs)
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : Effet visuel sur 94 lignes
; Exécution de L01DE en début 385ème ligne (60 ± 4 + 10 > 64 µs)
jsr L01DE ; 8 µs : attente début ligne 386
; Retour courant début ligne 386 (10 ± 4 µs)
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs : Délai total de 58 µs
L04F3:
deca ; 4 µs
bne L04F3 ; 4 µs
; Début de ligne 387 atteint (68 ± 4 >= 64 µs, équivaut à 4 ± 4 µs)
; Perturbations sur 94 lignes pour visualiser qu'une recherche est en cours
L04F6:
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs
sta PortC ; 5 µs : Retard 0 à 11 ± 4 µs
sta PortC ; 5 µs
nop ; 2 µs
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs
sta PortC ; 5 µs : Retard 2 à 25 ± 4 µs
sta PortC ; 5 µs
nop ; 2 µs
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs
sta PortC ; 5 µs : Retard 0 à 39 ± 4 µs
sta PortC ; 5 µs
nop ; 2 µs
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 2 µs
sta PortC ; 5 µs : Retard 2 à 53 ± 4 µs
sta PortC ; 5 µs
nop ; 2 µs
incx ; 4 µs
bpl L04F6 ; 4 µs : boucle de 64 µs = 1 ligne
; Début de ligne 481 atteint (4 ± 4 µs)
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Attente déroulement de 140 nouvelles lignes
sta X0010
clr X0011
jsr L04C5 ; Retour en fin de ligne 621
; Fin de ligne 621 atteinte (60 ± 4 µs)
nop ; 2 µs : délai de (11 × 2) µs = 22 ± 4 µs
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
; Ligne 622 atteinte (60 ± 4 + 22 > 64 µs, équivaut à 18 ± 4 µs)
lda PortA ; 4 : ligne 622 échantillonnée à 22 ± 4 µs
lsra ; 4 ; état détection de niveau dans carry
rol X0013 ; 6 : l'état de la ligne 622 entre par la droite
rts ; 6
;*******************************************************************************
; Sauvegarde des clefs niveaux 1 à 6 dans la 9306
; - table des clefs en X0016 (2 octets par clef)
; - clefs sauvegardées dans registres 0 à 5 de la 9306
;*******************************************************************************
L052F:
brclr 4,PortA,L052F ; PA4 : entrée DO(4) 9306
lda #%00100000 ; Commutation lente activée
sta PortA
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Sélection retard 2
sta PortC
clr X0010 ; Première clef à écrire dans le registre zéro
clr X0013 ; Indexation de la première clef dans la table
L053E:
ldx X0013 ; Récupération de l'index
lda X0016,x
sta X0011 ; Duplication octet supérieur de la clef
incx
lda X0016,x
sta X0012 ; Duplication octet supérieur de la clef
incx
stx X0013 ; Sauvegarde de l'index
jsr L05BC ; Ecriture de la clef indexée
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Temporisation intermédiaire de 10 ms
L0551:
jsr L0564 ; Temporisation élémentaire de 1 ms
deca
bne L0551 ; Réitération pour totaliser 10 ms
inc X0010 ; Registre suivant dans la 9306
lda X0010
cmp [Vous devez être inscrit et connecté pour voir ce lien] ; Ont-elles été sauvegardées toutes les 6 ?
bcs L053E ; Réitération pour écrire la clef suivante
clr X0013 ; RaZ de l'index
jmp L04A7 ; Clef niveau 7 en fin de table
;*******************************************************************************
; Temporisation de 1 ms (µcycle de 1 µs avec quartz de 4 MHz)
; Durée = 5 + 990 + 6 = 1001 µs soit 1 ms
;*******************************************************************************
L0564:
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; 5 µs, 99 boucles de 10 µs
L0566:
decx ; 4 µs
nop ; 2 µs
bne L0566 ; 4 µs
rts ; 6 µs
;*******************************************************************************
; Génération d'un cycle d'horloge sur SK (2) de la 9306
;*******************************************************************************
L056B:
nop ; 5 × nop = 10 µs
nop
nop
nop
nop
bset 2,PortA ; Entrée horloge SK à 1
jsr L0564 ; Durée 1 ms pour le palier haut
bclr 2,PortA ; Retour horloge SK à zéro
jsr L0564 ; Durée 1 ms pour le palier bas
rts
;*******************************************************************************
; Emission d'un ordre vers la 9306
; - ordre à émettre en X0024
;*******************************************************************************
L057B:
bset 3,PortA ; CS (1) à 1 = 9306 activée
bclr 3,PortC ; Emission d'un zéro sur DI (3)
jsr L056B ; Génération d'un cycle d'horloge
bset 3,PortC ; Emission du bit de start
jsr L056B ; Génération d'un cycle d'horloge
;*******************************************************************************
; Emission d'un octet vers la 9306
; - octet à émettre en X0024
;*******************************************************************************
L0587:
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Emission de 8 bits
L0589:
bclr 3,PortC ; Forçage à zéro de DI (3)
asl X0024 ; Bit à émettre dans Carry
bcc L0591 ; Branch si bit à zéro
bset 3,PortC ; Sinon forçage à 1 de DI (3)
L0591:
jsr L056B ; Emission de l'octet bit à bit
deca
bne L0589 ; Réitération pour le bit suivant
rts
;*******************************************************************************
; Bourrage par 10 cycles d'horloge entre 2 ordres
;*******************************************************************************
L0598:
bclr 3,PortA ; CS (1) à 0 = 9306 inhibée
bclr 3,PortC ; Forçage à zéro de DI (3)
lda [Vous devez être inscrit et connecté pour voir ce lien] ; 10 cycles d'horloge
L059E:
jsr L056B ; Génération d'un cycle d'horloge
deca
bne L059E ; Réitération pour le cycle suivant
bset 3,PortA ; CS (1) à 1 = 9306 activée
;*******************************************************************************
; Inhibition de la 9306
;*******************************************************************************
L05A6:
jsr L056B ; Génération d'un cycle d'horloge
bclr 3,PortA ; CS (1) à zéro = 9306 inhibée
rts
;*******************************************************************************
; Lecture d'un octet dans un registre de la 9306
; - octet reçu en X0024
;*******************************************************************************
L05AC:
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Réception de 8 bits
L05AE:
jsr L056B ; Génération d'un cycle d'horloge
clc ; Carry à zéro
brclr 1,PortA,L05B6 ; Branch si bit reçu à zéro
sec ; Carry = 1 si bit reçu à 1
L05B6:
rol X0024 ; Registre récepteur
deca
bne L05AE ; Réitération pour le bit suivant
rts
;*******************************************************************************
; Ecriture des 16 bits D0 à D15 d'un registre de la 9306
; - n° regitre en X0010
; - octet supérieur en X0011 et octet inférieur en X0012
;*******************************************************************************
L05BC:
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; Ordre Erase/Write ENable = $30
stx X0024
jsr L057B ; Emission de cet ordre
jsr L05A6
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Ordre ERASE register = $C0
ora X0010 ; Concaténation avec le n° de registre
sta X0024
jsr L057B ; Emission de cet ordre
jsr L0598 ; Bourrage
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Ordre WRITE register = $40
ora X0010 ; Concaténation avec le n° de registre
sta X0024
jsr L057B ; Emission de cet ordre
ldx X0011 ; Octet de poids fort en premier
stx X0024
jsr L0587 ; Ecriture bits D16 à D8 du registre
ldx X0012 ; Octet de poids faible en second
stx X0024
jsr L0587 ; Ecriture bits D7 à D0 du registre
jsr L0598 ; Bourrage
ldx [Vous devez être inscrit et connecté pour voir ce lien] ; Ordre Erase/Write DiSable = $00
stx X0024
jsr L057B ; Emission de cet ordre
jsr L05A6 ; Inhibition de la 9306
rts
;*******************************************************************************
; Lecture des 16 bits D15 à D0 d'un registre de la 9306
; - n° regitre en X0010
; - retour avec octet supérieur en X0011 et octet inférieur en X0012
;*******************************************************************************
L05F7:
lda [Vous devez être inscrit et connecté pour voir ce lien] ; Ordre READ = $80
ora X0010 ; Concaténation avec le n° de registre
sta X0024
jsr L057B ; Emission de cet ordre
bclr 3,PortC ; DI(3) 9306 à zéro
jsr L05AC ; Lecture des bits D15 à D8
lda X0024
sta X0011 ; Octet de poids fort du registre
jsr L05AC ; Lecture des bits D7 à D0
lda X0024
sta X0012 ; Octet de poids faible du registre
jsr L05A6 ; Inhibition de la 9306
rts
;*******************************************************************************
; Mask Option Register (MOR)
;*******************************************************************************
; b7 ou CLK = 0, Oscillateur = quartz
; b6 ou TOPT = 1, Emulation 6805P2/P4, seulement TIR et TIM du TCR
; b5 ou CLS = 1, Source externe broche TIMER (7)
; b4 ou (TIE) = 0, Inutilisé avec TOPT = 1
; b3 ou SNM = 0, Bit de sécurité du 68705P5, ???? pour le 68705P3S
; b2 = 0 : Prescaler = bypass, période = 1 µs (4 Mhz ÷ 4)
; b1 = 0 : "
; b0 = 0 : "
org $0784
MOR:
fcb %01100000
;*******************************************************************************
; Interrupt Vectors (8 octets)
;*******************************************************************************
org $07F8
Vectors:
fdb L0100 ; Interruption Timer
fdb L0100 ; Interruption Externe
fdb L0100 ; SWI
fdb L0100 ; Reset
end L0100
La recherche proprement dite.
- Le principe est basé sur la détection d'une transition verticale franche de la luminance. En effet pour les 3 premières trames, la table des retards est telle que le retard 2 (1804 ns) ne dépend que du paramètre Y (dénomination issue des articles de Science et Vie de Janvier 85 et Janvier 87).
- Si l'échantillonnage d'une ligne de la trame zéro survient entre une transition retardée de 902 ns et la même transition retardée de 1804 ns, le détecteur de niveau du blanc donnera un résultat (0 ou 1) différent et ce dernier sera alors assimilable au paramètre Y.
- Pour accroitre les chances de capturer une transition verticale qui peut survenir à n'importe quel endroit de l'image alors que l'échantillonnage se fait à période fixe, chaque ligne est échantillonnée à 4 reprises à des intervalles de 14 µs.
- Les 48 premières lignes de la trame zéro sont ignorées (bande noire des films en cinémascope) alors que les 92 suivantes sont échantillonnées et le résultat stocké par quartet en mémoire RAM :
- L'on pourrait stocker jusqu'à 8 échantillons par ligne pour doubler les probabilités de capture mais la vitesse du 68705 n'en autorise que 4.
- Le nombre de lignes échantillonnées est limité à 92 car la RAM interne ne comporte que 112 octets.
Observation: Si cette opération est positive 18 fois de suite (résultat du XOR = 1), on considère que l'on a capturé une transition positive de la luminance et réciproquement si elle est négative 18 fois consécutives (résultat du XOR = 0), on a alors capturé une transition négative.
Conclusion: Le logiciel du 68705 ne prenait en compte que les résultats positifs, donc les transitions positives de la luminance. Avec le même nombre d'échantillons, on aurait multiplié par 2 les chances de retrouver le code initial si l'algorithme du 68705 avait aussi exploité les transitions négatives, cela n'aurait couté que quelques lignes de code supplémentaires.
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
Bonjour Raffou,
Ce post est très enrichissant, un grand merci.
En complément, puis-je me permettre de demander une explication sur l'affichage à l'écran des 2 fenêtres oscillantes pendant la phase de recherche du code?
Nous avons déjà échangé tous les deux sur un autre forum et j'avais compris l'explication, mais je m'autorise à penser que cela pourrait intéresser d'autres membres, ce décodeur à base de 68705 a tellement été diffusé.
Ce post est très enrichissant, un grand merci.
En complément, puis-je me permettre de demander une explication sur l'affichage à l'écran des 2 fenêtres oscillantes pendant la phase de recherche du code?
Nous avons déjà échangé tous les deux sur un autre forum et j'avais compris l'explication, mais je m'autorise à penser que cela pourrait intéresser d'autres membres, ce décodeur à base de 68705 a tellement été diffusé.
Invité- Invité
Re: Discret11
Bonsoir à Tous, bonsoir DL3722.
Je viens de parcourir le source 68705 en diagonale pour m'en remémorer les subtilités.
En mode recherche:
• 1ère trame: on prélève 4 échantillons par ligne sur une petite centaine de lignes en milieu d'écran.
• 2ème trame: on recherche 18 échantillons consécutifs OK sur les 2 premières séries.
• 3ème trame: on génère une perturbation visuelle à mi-hauteur d'écran.
• 4ème trame: on recherche 18 échantillons consécutifs OK sur les 2 dernières séries.
• 5ème trame: on génère la perturbation visuelle à mi-hauteur d'écran.
• 6ème trame: calcul niveau d'audience, init GPA ... rebouclage en début de cycle.
Si on a obtenu 18 échantillons OK, on réitère le GPA à rebours à partir de ceux-ci pour retrouver le code initial. Sinon on poursuit la recherche sur le cycle suivant. Le code initial est sauvegardé dans le registre de l'EEROM spécifique au niveau d'audience en cours.
La perturbation visuelle est obtenue par deux permutations successives entre le retard 0 et le retard 2 sur une petite centaine de lignes à mi-hauteur d'écran.
NB: Je n'ai que les sauvegardes des cents premières pages et quelques unes entre 136 et 168 du fil de discussion qui a été brutalement supprimé. Je recherche donc ces pages manquantes, remerciements à ceux qui en ont archivées et qui voudront bien me les communiquer.
Je viens de parcourir le source 68705 en diagonale pour m'en remémorer les subtilités.
En mode recherche:
• 1ère trame: on prélève 4 échantillons par ligne sur une petite centaine de lignes en milieu d'écran.
• 2ème trame: on recherche 18 échantillons consécutifs OK sur les 2 premières séries.
• 3ème trame: on génère une perturbation visuelle à mi-hauteur d'écran.
• 4ème trame: on recherche 18 échantillons consécutifs OK sur les 2 dernières séries.
• 5ème trame: on génère la perturbation visuelle à mi-hauteur d'écran.
• 6ème trame: calcul niveau d'audience, init GPA ... rebouclage en début de cycle.
Si on a obtenu 18 échantillons OK, on réitère le GPA à rebours à partir de ceux-ci pour retrouver le code initial. Sinon on poursuit la recherche sur le cycle suivant. Le code initial est sauvegardé dans le registre de l'EEROM spécifique au niveau d'audience en cours.
La perturbation visuelle est obtenue par deux permutations successives entre le retard 0 et le retard 2 sur une petite centaine de lignes à mi-hauteur d'écran.
NB: Je n'ai que les sauvegardes des cents premières pages et quelques unes entre 136 et 168 du fil de discussion qui a été brutalement supprimé. Je recherche donc ces pages manquantes, remerciements à ceux qui en ont archivées et qui voudront bien me les communiquer.
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
Maintenant que mon codeur à base de D11 fonctionne j’ai ressorti mes vieux montages :
6802 et 68705.
Ils ne sont pas en très bon état je refais le schéma en KICAD.
Certains m’ont dit que modifier leur D11 les ennuyaient, et voudraient un codeur indépendant.
Je réfléchis à un dérivé du montage 6802 avec ou sans tda4565 ou LAR470nS.
Ça intéresse quelque un ?
6802 et 68705.
Ils ne sont pas en très bon état je refais le schéma en KICAD.
Certains m’ont dit que modifier leur D11 les ennuyaient, et voudraient un codeur indépendant.
Je réfléchis à un dérivé du montage 6802 avec ou sans tda4565 ou LAR470nS.
Ça intéresse quelque un ?
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
Bonsoir à tous.
J'avais déjà réfléchi à un codeur indépendant piloté par un Arduino pour être dans l'air du temps.
J'ai donc repris récemment ce schéma avec cette fois-ci un multiplexeur/amplificateur compatible niveaux TTL.
[Vous devez être inscrit et connecté pour voir cette image]
J'ai même commencé à câbler le prototype en miniwrapping:
[Vous devez être inscrit et connecté pour voir cette image]
Plutôt que d'utiliser un Arduino Uno, j'ai pensé à un moment utiliser un minuscule Seeeduino XIAO, le problème, c'est que ses pins d'entrée/sortie sont en logique 3,3 volts. Donc pour éviter d'insérer des translateurs de niveau, l'Arduino sera un Arduino Nano.
J'avais déjà réfléchi à un codeur indépendant piloté par un Arduino pour être dans l'air du temps.
J'ai donc repris récemment ce schéma avec cette fois-ci un multiplexeur/amplificateur compatible niveaux TTL.
[Vous devez être inscrit et connecté pour voir cette image]
J'ai même commencé à câbler le prototype en miniwrapping:
[Vous devez être inscrit et connecté pour voir cette image]
Plutôt que d'utiliser un Arduino Uno, j'ai pensé à un moment utiliser un minuscule Seeeduino XIAO, le problème, c'est que ses pins d'entrée/sortie sont en logique 3,3 volts. Donc pour éviter d'insérer des translateurs de niveau, l'Arduino sera un Arduino Nano.
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
qui a encore de ce DL3722 ?
j ai jamais eu ce modele !
je serais preneur d un exemplaire.
Raffou je ne suis pas fana de l arduino mais si on sépare le micro on pourrait utiliser un 89s52
ou un pic16 !!! avec ta structure ....
sur mon modele 6802 à tda4565 je vois que l entrée des tda est directe sur l émeteur suiveur du TO précedent et pas de condo de découplage comme
recommandé sur le datasheet ???
bonne ou mauvaise idée ??
j ai jamais eu ce modele !
je serais preneur d un exemplaire.
Raffou je ne suis pas fana de l arduino mais si on sépare le micro on pourrait utiliser un 89s52
ou un pic16 !!! avec ta structure ....
sur mon modele 6802 à tda4565 je vois que l entrée des tda est directe sur l émeteur suiveur du TO précedent et pas de condo de découplage comme
recommandé sur le datasheet ???
bonne ou mauvaise idée ??
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
dreambox59 a écrit:qui a encore de ce DL3722 ?
j ai jamais eu ce modele !
C’est une ligne à retard double.
Et autant on trouve facilement des TDA4560, TDA4565, des lignes bobinées, autant je n’ai jamais vu de DL3722 en vente ces dernières années.
Ici, un exemple dans un de mes D11, de la taille d’un paquet de cigarettes :
[Vous devez être inscrit et connecté pour voir cette image]
Invité- Invité
Re: Discret11
Salut à tous,
Bien heureux de revoir un forum digne de ce nom !
Je suis à l'ouest qu'est ce qui est arrivé à "Retro Forum" ?
Ne pouvons nous pas faire la migration du sujet "Codeur D11 de JP" ici ?
Bien heureux de revoir un forum digne de ce nom !
Je suis à l'ouest qu'est ce qui est arrivé à "Retro Forum" ?
Ne pouvons nous pas faire la migration du sujet "Codeur D11 de JP" ici ?
Dernière édition par rené45 le Jeu 30 Déc - 19:03, édité 1 fois
rené45- Messages : 53
Date d'inscription : 30/12/2021
Age : 51
Localisation : Troyes 10000
Re: Discret11
je viens juste de recuperer un transcodeur sony pal vers secam .
c est sur qu avec transcodage en secam , quand un D11 est dans le circuit codage-decodage il n y a pas de couleur bizarre !
mais l image est moins "nette" en secam qu en pal !!!!
les incrustations de texte sont moins lisibles .
j ai essayé sur 2 TV écran plat ,( j ai plus rien en état en cathodique) c est peut etre ce genre de TV qui n est pas trop OK en secam.
c est sur qu avec transcodage en secam , quand un D11 est dans le circuit codage-decodage il n y a pas de couleur bizarre !
mais l image est moins "nette" en secam qu en pal !!!!
les incrustations de texte sont moins lisibles .
j ai essayé sur 2 TV écran plat ,( j ai plus rien en état en cathodique) c est peut etre ce genre de TV qui n est pas trop OK en secam.
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
dreambox59 a écrit:je viens juste de recuperer un transcodeur sony pal vers secam .
c est sur qu avec transcodage en secam , quand un D11 est dans le circuit codage-decodage il n y a pas de couleur bizarre !
mais l image est moins "nette" en secam qu en pal !!!!
les incrustations de texte sont moins lisibles .
j ai essayé sur 2 TV écran plat ,( j ai plus rien en état en cathodique) c est peut etre ce genre de TV qui n est pas trop OK en secam.
Celui que je t'avais fourni ne va pas pour les tests ?
rené45- Messages : 53
Date d'inscription : 30/12/2021
Age : 51
Localisation : Troyes 10000
Re: Discret11
julien le tien est en panne je me suis pas encore penché dessus !
par contre le sony SFR1000 génere les bouteilles SECAM (pour infos)
par contre le sony SFR1000 génere les bouteilles SECAM (pour infos)
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
Très intéressent comme nouvelle, je ne sais pas si c'est le cas pour mon transcodeur PAL/SECAM...je n'ai jamais eu d'info sur ce circuit qui est dans le "boitier rackable u1"dreambox59 a écrit:julien le tien est en panne je me suis pas encore penché dessus !
par contre le sony SFR1000 génere les bouteilles SECAM (pour infos)
je ne connais pas la provenance... ce que je sais est qu'il est stable niveau image lors du cryptage mais peut être qu'avec le nouveau système codeur sur D11 off que j'attends de la par de Natacha ça risque d'être juste..?
Qu'est ce qu'il apporte en plus du coup?
rené45- Messages : 53
Date d'inscription : 30/12/2021
Age : 51
Localisation : Troyes 10000
Re: Discret11
Bonsoir à tous.
L'Arduino Nano avec son quartz de 16MHz à une duré de cycle de 62,5 ns donc 6 fois moindre que le 89s52 équipé d'un quartz 32MHz.
Le µcontrôleur devant assurer tous les timing sans aucune assistance extérieure (monostable par exemple) je crains que le 89s52 ne soit pas assez rapide.
J'avais même envisagé à un moment d'utiliser un Seeeduino XIAO qui devrait être encore plus rapide avec son CPU ARM Cortex M0 32bits à 48MHz, le souci c'est que ses pins sont en logique 3,3 volts.
D'après ce que j'ai lu sur le datasheet du 89s52, une instruction d'un seul cycle dure 12 µcycles, avec un quartz de 32 MHz cela donne une durée de cycle de 375ns et certaines instructions nécessitent plusieurs cycles pour leur exécution.dreambox59 a écrit: a écrit:je ne suis pas fana de l arduino mais si on sépare le micro on pourrait utiliser un 89s52
ou un pic16 !!! avec ta structure ....
L'Arduino Nano avec son quartz de 16MHz à une duré de cycle de 62,5 ns donc 6 fois moindre que le 89s52 équipé d'un quartz 32MHz.
Le µcontrôleur devant assurer tous les timing sans aucune assistance extérieure (monostable par exemple) je crains que le 89s52 ne soit pas assez rapide.
J'avais même envisagé à un moment d'utiliser un Seeeduino XIAO qui devrait être encore plus rapide avec son CPU ARM Cortex M0 32bits à 48MHz, le souci c'est que ses pins sont en logique 3,3 volts.
Avec un bout de schéma ce serait plus explicite, pas évident de donner une réponse sans cela.dreambox59 a écrit: a écrit:sur mon modele 6802 à tda4565 je vois que l entrée des tda est directe sur l émeteur suiveur du TO précedent et pas de condo de découplage comme
recommandé sur le datasheet ???
bonne ou mauvaise idée ??
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
le 89s52 est un 8751 standard : 12 cycle par instruction , je mets un quartz 24mhz et j ai 2 instruction par µS , c est largement plus que le 8749 et ça suffit.
j utilise ce pavé parce que j en ai une centaine qui traine et qu il sont programmable avec un usbasp pas cher .
mais quand je veux plus de puissance j ai aussi la gamme des at89lp51 qui sont du type 1 instruction par cycle : à 20mhz = 1 ins par 50nS , 100% compatible brochage mais il faut un autre programmeur (que j ai créer).
pour les 4565 des que je pourrais joindre des images .... servimg ne me connait pas.
test servimg
[Vous devez être inscrit et connecté pour voir cette image]
j utilise ce pavé parce que j en ai une centaine qui traine et qu il sont programmable avec un usbasp pas cher .
mais quand je veux plus de puissance j ai aussi la gamme des at89lp51 qui sont du type 1 instruction par cycle : à 20mhz = 1 ins par 50nS , 100% compatible brochage mais il faut un autre programmeur (que j ai créer).
pour les 4565 des que je pourrais joindre des images .... servimg ne me connait pas.
test servimg
[Vous devez être inscrit et connecté pour voir cette image]
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
onjour à tous et meilleurs vœux pour l'année 2022.
Le problème c'est que je n'ai pas réussi à télécharger le "AT89LP Developer Studio", il semble avoir disparu des écrans sur le site Microchip pourtant on peut encore télécharger sa notice.
L'autre souci, c'est le programmeur, apparemment c'est possible via un Arduino.
Par contre j'ai trouvé le convertisseur de niveau HW-221 à base de TXS0108E pour interfacer la logique 5 volts à la logique 3,3 volts du Seeeduino XIAO et ce vis-versa puisqu'il est bidirectionnel.
Très intéressante cette série at89lp.dreambox59 a écrit:mais quand je veux plus de puissance j ai aussi la gamme des at89lp51 qui sont du type 1 instruction par cycle : à 20mhz = 1 ins par 50nS , 100% compatible brochage mais il faut un autre programmeur (que j ai créer).
Le problème c'est que je n'ai pas réussi à télécharger le "AT89LP Developer Studio", il semble avoir disparu des écrans sur le site Microchip pourtant on peut encore télécharger sa notice.
L'autre souci, c'est le programmeur, apparemment c'est possible via un Arduino.
Par contre j'ai trouvé le convertisseur de niveau HW-221 à base de TXS0108E pour interfacer la logique 5 volts à la logique 3,3 volts du Seeeduino XIAO et ce vis-versa puisqu'il est bidirectionnel.
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
le mode programmation des AT89LP est tres proche du mode SPI standard :
contrairement aux 89s52 et AVR qui n utilisent que mosi miso et clk ,les LP utilisent en plus
SS .
donc facilement emulable avec un arduino.
j ai les fichiers atmel ispstudio et isp developper , j ai réaliser le prog fourni par eux mais il n a jamais fonctionné , plusieurs internautes ont fait la meme constatation, du coup j ai réecrit un programme qui utilise le meme hardware .
contrairement aux 89s52 et AVR qui n utilisent que mosi miso et clk ,les LP utilisent en plus
SS .
donc facilement emulable avec un arduino.
j ai les fichiers atmel ispstudio et isp developper , j ai réaliser le prog fourni par eux mais il n a jamais fonctionné , plusieurs internautes ont fait la meme constatation, du coup j ai réecrit un programme qui utilise le meme hardware .
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
Bonjour à tous.
@Jean-Patrick: J'ai bien reçu (à deux reprises) le fichier (at89lp_isp_studio-zip_2022-01-02_0847) que tu m'as envoyé et t'en remercie..
Si j'ai bien tout compris:
• AT89LP_ISP_Studio est le logiciel qui permet de programmer les AT89LPxx
• ISP_studio_board concerne la carte qui assure l'interface entre un port série du PC et le bus ISP du AT89LPxx à programmer.
• ISP_studio_usb_board: idem mais à partir d'un port USB du PC.
• LP_Studio_Board concerne la carte OCD avec des supports tulipe pour tester/programmer différents AT89LPxx.
@Jean-Patrick: J'ai bien reçu (à deux reprises) le fichier (at89lp_isp_studio-zip_2022-01-02_0847) que tu m'as envoyé et t'en remercie..
Si j'ai bien tout compris:
• AT89LP_ISP_Studio est le logiciel qui permet de programmer les AT89LPxx
• ISP_studio_board concerne la carte qui assure l'interface entre un port série du PC et le bus ISP du AT89LPxx à programmer.
• ISP_studio_usb_board: idem mais à partir d'un port USB du PC.
• LP_Studio_Board concerne la carte OCD avec des supports tulipe pour tester/programmer différents AT89LPxx.
De quelle carte parmi les 3 ci-dessus s'agit-il? Comment obtenir le PCB et le µC avec programme modifié?dreambox59 a écrit:j ai réaliser le prog fourni par eux mais il n a jamais fonctionné , plusieurs internautes ont fait la meme constatation, du coup j ai réecrit un programme qui utilise le meme hardware .
Concernant le fichier "isp developper" cité ci-dessus, ne s'agirait-il pas plutôt du fichier "AT89LP Developer studio" car c'est ce dernier qui semble avoir disparu du site Microchip et que je n'arrive pas à télécharger. Sans lui pas pas d'écriture de programmes possible.dreambox59 a écrit:j ai les fichiers atmel ispstudio et isp developper
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
isp studio serial ou usb sont equivalent c est dailleurs le meme firmware
j ai creer une carte qui ressemble mais avec un software specifique :
je t envoie ça par WE
PS j ai des circuits imprimé du modele original et du mien modifié! si tu veux experimenter ?
j ai creer une carte qui ressemble mais avec un software specifique :
je t envoie ça par WE
PS j ai des circuits imprimé du modele original et du mien modifié! si tu veux experimenter ?
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
@Jean-Patrick: J'ai bien reçu le fichier "at89lp-developer-studio-2-msi_2022-01-02_1411.zip" et je t'en remercie.
Ce zip inclut un fichier "AT89LP Developer Studio.msi" de 9,9 Mo et un fichier "AT89LP Developer Studio (2).msi" de 13,1 Mo.
Quelle est donc la différence entre les 2 puisqu'ils comportent pratiquement le même nom? Lequel est-il préférable d'installer?
Je veux bien un circuit imprimé du modèle modifié qui fonctionne. Avec quel µC faut-il l'équiper, faut-il te le fournir et peux tu le programmer?
Ce zip inclut un fichier "AT89LP Developer Studio.msi" de 9,9 Mo et un fichier "AT89LP Developer Studio (2).msi" de 13,1 Mo.
Quelle est donc la différence entre les 2 puisqu'ils comportent pratiquement le même nom? Lequel est-il préférable d'installer?
Je veux bien un circuit imprimé du modèle modifié qui fonctionne. Avec quel µC faut-il l'équiper, faut-il te le fournir et peux tu le programmer?
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
je pense que c est 2 version d indice different le plus gros est le plus récent je pense...
je peux t envoyer un circuit le µp est un at89lp2052 ou 4052 , je peux le programmer ici.
par contre dans mon usage courant j utilise une version port parrallele plus rapide basé sur un schema hyper connu du STK200 ,la aussi j ai des software adapté dont des versions tout en un: je donne le nom du bin en cours et chaque fois que je clique "envoyer" le prog se connecte efface reprogramme verifie et deconnecte .Super pratique pendant le dévellopement
j essaye de t envoyer d autres documents mais WE semble bloquer il y a peut etre une limitation !!!
je peux t envoyer un circuit le µp est un at89lp2052 ou 4052 , je peux le programmer ici.
par contre dans mon usage courant j utilise une version port parrallele plus rapide basé sur un schema hyper connu du STK200 ,la aussi j ai des software adapté dont des versions tout en un: je donne le nom du bin en cours et chaque fois que je clique "envoyer" le prog se connecte efface reprogramme verifie et deconnecte .Super pratique pendant le dévellopement
j essaye de t envoyer d autres documents mais WE semble bloquer il y a peut etre une limitation !!!
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
Je commence tout doucement à y voir plus clair...
En fait le programmeur le plus simple est celui basé sur le STK200.
Le souci c'est le port parallèle, il faut que j'utilise mon vieux PC sous XP car le PC que j'utilise actuellement n'en a plus du tout!
A terme il me faudra un programmeur sur port USB, qu'est ce que tu penses de celui-ci: objet eBay 224245598023 ou de celui-la: objet ebay 224245565410 qui semble être le même.
[Vous devez être inscrit et connecté pour voir cette image]
En fait le programmeur le plus simple est celui basé sur le STK200.
Le souci c'est le port parallèle, il faut que j'utilise mon vieux PC sous XP car le PC que j'utilise actuellement n'en a plus du tout!
A terme il me faudra un programmeur sur port USB, qu'est ce que tu penses de celui-ci: objet eBay 224245598023 ou de celui-la: objet ebay 224245565410 qui semble être le même.
[Vous devez être inscrit et connecté pour voir cette image]
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
je l ai acheté celui là il vient du canada , j ai meme dialogué avec son concepteur (tres sympa), malgre ça il est peu rapide et il est commandé par un ecran type console à travers emulateur VT100
mon exemplaire ne marchait pas bien sur certains modele de AT89LP le canadien m a demandé de le renvoyer au canada pour le mettre à jour il ne voulait pas me fournir de soft !! j ai laissé tomber
moi j utilise le port parallele sous w7-64 ou w10 grace à une carte bus pci additionelle et ça va tres bien il y a juste l adresse de base qui n est pas $378.
mon exemplaire ne marchait pas bien sur certains modele de AT89LP le canadien m a demandé de le renvoyer au canada pour le mettre à jour il ne voulait pas me fournir de soft !! j ai laissé tomber
moi j utilise le port parallele sous w7-64 ou w10 grace à une carte bus pci additionelle et ça va tres bien il y a juste l adresse de base qui n est pas $378.
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
J'ai commandé une carte PCI-E / port LPT parallèle, je devrais la recevoir dans la semaine.
Si j'ai bien compris, il me faut une carte interface STK200 (cableisp5) reliée à une carte support (progdip) pour pouvoir y installer les différents AT89LPxxx à programmer.
Sont ce les PCB de ces cartes que tu disposes en plusieurs exemplaires?
• A quoi sert le connecteur J3 sur la carte progdip?
• Est ce que le quartz Y1 est indispensable pour programmer les AT89LP51?
• Est ce qu'on peut programmer les AT89LP51 via la carte interface STK200 ou faut-il impérativement le faire via la carte proglp (programmateur de AT89LP51)?
Si j'ai bien compris, il me faut une carte interface STK200 (cableisp5) reliée à une carte support (progdip) pour pouvoir y installer les différents AT89LPxxx à programmer.
Sont ce les PCB de ces cartes que tu disposes en plusieurs exemplaires?
• A quoi sert le connecteur J3 sur la carte progdip?
• Est ce que le quartz Y1 est indispensable pour programmer les AT89LP51?
• Est ce qu'on peut programmer les AT89LP51 via la carte interface STK200 ou faut-il impérativement le faire via la carte proglp (programmateur de AT89LP51)?
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
j3 c est pour définir la polarite de reset :j3=5v reset classique de 8751 au +5v
j ai une carte cableisp5 et la carte progdip c est pour programmer des chip en dehors de leur carte cible mais le connecteur he10 est compatible avec les cartes codeur ou autre prevu pour mcs51 (le brochage mcs51 était different dans les documents atmel mais le brochage le plus répandu est identique à celui des avr)
j ai une carte cableisp5 et la carte progdip c est pour programmer des chip en dehors de leur carte cible mais le connecteur he10 est compatible avec les cartes codeur ou autre prevu pour mcs51 (le brochage mcs51 était different dans les documents atmel mais le brochage le plus répandu est identique à celui des avr)
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
retour sur le dossier codeur D11:
la carte fille embrochable sur le support 40broches du RT84 fonctionne parfaitement !
il est trés préferable de l utiliser avec du SECAM (en PAL il y a des couleurs bizarres par moment)
je vais faire l adaptation pour le D12 (rené45) il n y a pas de grosse differences mais juste un probleme de taille dans la boite
les modifications hardware sont trés limité sur le D11 et encore moins importante sur le D12
la carte fille embrochable sur le support 40broches du RT84 fonctionne parfaitement !
il est trés préferable de l utiliser avec du SECAM (en PAL il y a des couleurs bizarres par moment)
je vais faire l adaptation pour le D12 (rené45) il n y a pas de grosse differences mais juste un probleme de taille dans la boite
les modifications hardware sont trés limité sur le D11 et encore moins importante sur le D12
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
Le codeur est prêt de mon côté, j'ai refermé le boitier.
Tests à venir ce week-end. Je posterai ici.
Merci en tout cas pour ce montage, c'est très bien pensé, et la qualité de fabrication est remarquable.
Tests à venir ce week-end. Je posterai ici.
Merci en tout cas pour ce montage, c'est très bien pensé, et la qualité de fabrication est remarquable.
Invité- Invité
Re: Discret11
Salut,dreambox59 a écrit:retour sur le dossier codeur D11:
la carte fille embrochable sur le support 40broches du RT84 fonctionne parfaitement !
il est trés préferable de l utiliser avec du SECAM (en PAL il y a des couleurs bizarres par moment)
je vais faire l adaptation pour le D12 (rené45) il n y a pas de grosse differences mais juste un probleme de taille dans la boite
les modifications hardware sont trés limité sur le D11 et encore moins importante sur le D12
Comme convenu hier je te joins la photo de mon D12.
Petit rappel pour l'histoire : Il provient d'un déco off suisse de la chaîne Téléciné.
Le petit circuit en vertical avec le quartz est éventuellement déplaçable assez facilement ! Le circuit qui est naturellement devenu (codeur) est en Rack, donc y a de la place autour de celui-ci et ne pense pas qu'il y ait besoin de modifier la nouvelle carte que tu as mis au point dernièrement.
(Et toujours sans nouvelles depuis quelques semaines maintenant de Natacha qui doit me faire parvenir un décodeur D11 pour remettre en route mon système.)
[Vous devez être inscrit et connecté pour voir cette image]
rené45- Messages : 53
Date d'inscription : 30/12/2021
Age : 51
Localisation : Troyes 10000
Re: Discret11
Bonjour,
Mode HS - ON
Profitez de l'occasion pour lui suggérer l'existence de ce forum.
Mode HS - ON
sans nouvelles depuis quelques semaines maintenant de Natacha
Profitez de l'occasion pour lui suggérer l'existence de ce forum.
DLC et DL3722
Une des pub's de l'époque que les moins de deux fois vingt ans ne peuvent pas connaître:
Sauf que 2 lignes à retard qui ont des temps de montée identiques (110 ns) ne peuvent pas avoir des bandes passantes différentes (8 et 6,5 MHz).
Selon la formule BP = 0,36 ÷ Tmp, Tmp étant le temps de montée propre de la ligne soit 110 ns, elles auraient au mieux une bande passante de 3,5 MHz.
Ya forcément une des données qui est fausse!
Raffou- Modérateur principal
- Messages : 114
Date d'inscription : 21/12/2021
Re: Discret11
Bonjour,
J'ai pu tester le codeur D11 aujourd'hui, il fonctionne très bien, du 1er coup.
Bravo pour cet excellent projet.
J'ai pu tester le codeur D11 aujourd'hui, il fonctionne très bien, du 1er coup.
Bravo pour cet excellent projet.
Invité- Invité
Re: Discret11
hello les gards désolée pour tout ces contre temps a la con ,je me suis foulée une cheville et rené 45 m as donner le descriptif de ce forum ,et du coup la casse pieds de service est la ....... je vois que ces cartes qui permettent de transformer un D11 en encodeur semble au dire de tous ici fonctionner a merveilles, perso je n ais pas encore eue le temps de m en occuper ,du coup je les ais simplement stockée . mais dés que j en aurais le temps je vais les adapter a un décodeur munis des fameuses ligne a retard vertes ,une simple lecture de schéma des 2 type de décodeur "officiel et pirate" me permettras sans nul doute de parvenir a mes fins...et un simple clavier matriciel rien de plus simple a reconstituer . au fait une excellente et bonne année a tous et toutes au cas ou une YL serais présente ici
natacha3000- Messages : 18
Date d'inscription : 15/01/2022
Re: Discret11
on se contactera je t aiderais à faire cette adaptation .
j ai encore des circuits imprimés non montés tu pourrais mettre des connecteurs à la place du support 40Br du 8749.
et puis il faudrait que je fasse une modif aux niveaux des commandes des retards pour que ça correspondent au circuit à base de 68705.
j ai encore des circuits imprimés non montés tu pourrais mettre des connecteurs à la place du support 40Br du 8749.
et puis il faudrait que je fasse une modif aux niveaux des commandes des retards pour que ça correspondent au circuit à base de 68705.
dreambox59- Messages : 121
Date d'inscription : 28/12/2021
Localisation : bourgogne
Re: Discret11
Bonjour,
J'ai continué à manipuler le codeur D11 cet après-midi.
Le fonctionnement est parfait, et sur le plan visuel, il est quasiment impossible d'identifier que l'image affichée est passée par un codage puis un décodage.
Je comprends maintenant pourquoi dreambox59 a voulu viser ce niveau de qualité, respect.
J'ai eu une déconvenue avec ma roue codeuse (ce qui n'a rien à voir avec la platine d'encodage) de piètre qualité. Sur le reste du montage, zéro surprise, tout est limpide.
J'ai continué à manipuler le codeur D11 cet après-midi.
Le fonctionnement est parfait, et sur le plan visuel, il est quasiment impossible d'identifier que l'image affichée est passée par un codage puis un décodage.
Je comprends maintenant pourquoi dreambox59 a voulu viser ce niveau de qualité, respect.
J'ai eu une déconvenue avec ma roue codeuse (ce qui n'a rien à voir avec la platine d'encodage) de piètre qualité. Sur le reste du montage, zéro surprise, tout est limpide.
Invité- Invité
Re: Discret11
Salut à tous,
Je commence doucement à remettre mon système en place, la baie est assemblée, le codeur D11 sur une base de D12 est de nouveau sur le rack avec les moniteurs de contrôle ainsi que le transcodeur PAL/SECAM. Y a encore du boulot pour remettre en route cela mais ça avance doucement (Santé oblige..)
Normalement je reçois le décodeur en provenance de Natacha la semaine prochaine, je vais donc essayer que ce soit opérationnel avant l'arrivée de celui-ci.
Je vais également moderniser la transmission avec un petit émetteur UHF analogique. (Natacha doit me fournir un lien pour m'en procurer un) Car jusqu'à présent c'était le tuner d'un magnétoscope qui faisait office de transmission du signal. "C'était bien mais pas top"
[Vous devez être inscrit et connecté pour voir cette image]
Voilà voilà pour les nouvelles
Je commence doucement à remettre mon système en place, la baie est assemblée, le codeur D11 sur une base de D12 est de nouveau sur le rack avec les moniteurs de contrôle ainsi que le transcodeur PAL/SECAM. Y a encore du boulot pour remettre en route cela mais ça avance doucement (Santé oblige..)
Normalement je reçois le décodeur en provenance de Natacha la semaine prochaine, je vais donc essayer que ce soit opérationnel avant l'arrivée de celui-ci.
Je vais également moderniser la transmission avec un petit émetteur UHF analogique. (Natacha doit me fournir un lien pour m'en procurer un) Car jusqu'à présent c'était le tuner d'un magnétoscope qui faisait office de transmission du signal. "C'était bien mais pas top"
[Vous devez être inscrit et connecté pour voir cette image]
Voilà voilà pour les nouvelles
rené45- Messages : 53
Date d'inscription : 30/12/2021
Age : 51
Localisation : Troyes 10000
Re: Discret11
Bonjour,
Une vidéo du codeur de dreambox59 en action, avec un décodeur en face.
J’ai ré-installé le tout à l’arrache sur un coin de table du sous-sol pour avoir codeur et décodeur côte à côte pour la démo, mais normalement le codeur est dans une pièce, et le décodeur dans le salon.
Le codeur est à droite, il contient la platine de dreambox59, une roue codeuse et un afficheur, le décodeur se trouve à gauche.
On voit également le player vidéo (un adaptateur TNT), et le transcodeur PAL→SECAM.
Il y a aussi un modulateur UHF (non visible, mais il est là), dont le signal est normalement injecté dans les coaxiaux de la maison, mais pour la démo, il attaque une TV.
Le player vidéo sort en PAL, le transcodeur remet en SECAM, puis attaque le modulateur UHF, qui rentre sur le tuner analogique de la TV. Le décodeur est connecté sur la péritel de la TV.
Ce que l’on voit :
Le player envoie une vidéo non cryptée au codeur (qui n’est pas actif), l’image est en clair (alunissage Apollo11, il y a sûrement plus 'vendeur' que ça).
Activation du codeur, l’image se crypte.
Allumage du décodeur, l’image passe en clair (décryptée).
Arrêt du codeur, l’image passe en clair et le décodeur se désactive.
Voici le lien vers la vidéo:
[Vous devez être inscrit et connecté pour voir ce lien]
Belle conception de dreambox59, le codeur est parfaitement fonctionnel.
A savoir qu’il fait aussi D12, mais là je ne suis pas équipé.
Une vidéo du codeur de dreambox59 en action, avec un décodeur en face.
J’ai ré-installé le tout à l’arrache sur un coin de table du sous-sol pour avoir codeur et décodeur côte à côte pour la démo, mais normalement le codeur est dans une pièce, et le décodeur dans le salon.
Le codeur est à droite, il contient la platine de dreambox59, une roue codeuse et un afficheur, le décodeur se trouve à gauche.
On voit également le player vidéo (un adaptateur TNT), et le transcodeur PAL→SECAM.
Il y a aussi un modulateur UHF (non visible, mais il est là), dont le signal est normalement injecté dans les coaxiaux de la maison, mais pour la démo, il attaque une TV.
Le player vidéo sort en PAL, le transcodeur remet en SECAM, puis attaque le modulateur UHF, qui rentre sur le tuner analogique de la TV. Le décodeur est connecté sur la péritel de la TV.
Ce que l’on voit :
Le player envoie une vidéo non cryptée au codeur (qui n’est pas actif), l’image est en clair (alunissage Apollo11, il y a sûrement plus 'vendeur' que ça).
Activation du codeur, l’image se crypte.
Allumage du décodeur, l’image passe en clair (décryptée).
Arrêt du codeur, l’image passe en clair et le décodeur se désactive.
Voici le lien vers la vidéo:
[Vous devez être inscrit et connecté pour voir ce lien]
Belle conception de dreambox59, le codeur est parfaitement fonctionnel.
A savoir qu’il fait aussi D12, mais là je ne suis pas équipé.
Dernière édition par DL3722 le Dim 30 Jan - 17:19, édité 1 fois
Invité- Invité
Re: Discret11
Salut JP,
c'est une super nouvelle ! On s'approche de la norme de l'époque ! Cryptage en deux temps : 1er temps décalage image (complète non coder) vers la droite, puis 2ème temps : cryptage de l'image complète vers la gauche et naturellement au décodage sur l'écran, la barre noir sur la droite ? Si c'est ça que tu me dis c'est simplement génial ! Chapeau l'artiste !
Dernière édition par rené45 le Lun 31 Jan - 10:55, édité 1 fois
rené45- Messages : 53
Date d'inscription : 30/12/2021
Age : 51
Localisation : Troyes 10000
Re: Discret11
bonjour, parfois les réglages effectués en usine lord de l alignement des téléviseurs ne permettais pas de voir cette fameuse barre a droite "amplitude horizontal exagérée " et souvent une amplitude verticale pas top non plus ,l usage de la mire permétais sans mal de mettre ces défaut de géométrie en évidence . du coup sur mon propre tv cathodique combi magnéto tv de philips j ai revu toute la procedure de réglage ,en rentrant dans le menu de service et la bingo tout ce qui devais étre affiché la été en respectant bien sur la linéaritée verticale et horizontale et les effets dit de coussin . et a l issue de tout ça tout était conforme au attente , bon a savoir pas vrais!
natacha3000- Messages : 18
Date d'inscription : 15/01/2022
Page 1 sur 4 • 1, 2, 3, 4
Page 1 sur 4
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Hier à 16:08 par jmespe
» Laquelle ?
Hier à 11:52 par Bruno_Picard
» Cherche VARIAC ou assimilé
Sam 18 Mai - 21:47 par Bruno_Picard
» Discret 12
Ven 17 Mai - 9:04 par dreambox59
» mise en place cms
Jeu 16 Mai - 9:48 par LePetit
» Logo Cabasse
Mer 15 Mai - 18:11 par Bruno_Picard
» Projet de VU-mètre stéréo à tubes cathodiques 902 A
Dim 12 Mai - 14:24 par Bruno_Picard
» probleme transistors montés sur un même dissipateur
Sam 11 Mai - 15:57 par Roger33