[Thomson] SDDRIVE
Modérateurs : Papy.G, fneck, Carl
Re: [Thomson] SDDRIVE
Bonjour Daniel et désolé pour le temps que j'ai mis à te répondre.
Et bien je suis encore loin de chez moi donc je ne pourrai te dire mais je le ferai quant je le pourrai
Très bonne fin de weekend à toi et Merci encore !
YoGi
Et bien je suis encore loin de chez moi donc je ne pourrai te dire mais je le ferai quant je le pourrai
Très bonne fin de weekend à toi et Merci encore !
YoGi
---- thomson 4 ever ! ----
Re: [Thomson] SDDRIVE
A l'occasion d'une nouvelle commande de circuits imprimés la version "Minibus" de SDDRIVE a été légèrement modifiée : Le module d'interface avec la carte SD est placé horizontalement et ne dépasse plus au-dessus du circuit imprimé. C'est à la fois plus pratique et plus esthétique.
A compter du 06/06/2020 ce nouveau modèle remplace l'ancien.
La version "classique" avec connecteur HE901 reste disponible sous l'ancienne forme jusqu'à épuisement du stock. Ensuite elle sera abandonnée, seule la version "Minibus" sera fabriquée. Voici les photos de cette nouvelle version :
A compter du 06/06/2020 ce nouveau modèle remplace l'ancien.
La version "classique" avec connecteur HE901 reste disponible sous l'ancienne forme jusqu'à épuisement du stock. Ensuite elle sera abandonnée, seule la version "Minibus" sera fabriquée. Voici les photos de cette nouvelle version :
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 7925
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson] SDDRIVE
C'est aussi plus pratique si on utilise une nape µ-sd comme moi qui déborde un peu sur l'écran TV avec l'organisation initiale.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [Thomson] SDDRIVE
Bonjour,
Est-ce qu'il y a des tools public pour convertir des vidéos directement lisible avec sddrive ? (comme simon cats par exemple ?)
Est-ce qu'il y a des tools public pour convertir des vidéos directement lisible avec sddrive ? (comme simon cats par exemple ?)
-
- Messages : 7925
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: [Thomson] SDDRIVE
Oui, il faudrait que je publie mes trucs sur github, sinon tout est disponible dans le fil correspondant. Il faut fouiller les "attachements" viewtopic.php?p=142233#p142233
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: [Thomson] SDDRIVE
Contrairement à __sam__ je n'ai pas développé d'outils génériques. Pour Simon's Cat c'est du pur bricolage.
Extraction de la vidéo d'un fichier bmp pour chaque image, écriture d'un programme de compression sur PC et d'un programme d'affichage sur Thomson. Je peux donner les sources mais personne ne saura les utiliser. On parie ?
Programme PC :
Programme Thomson :
Extraction de la vidéo d'un fichier bmp pour chaque image, écriture d'un programme de compression sur PC et d'un programme d'affichage sur Thomson. Je peux donner les sources mais personne ne saura les utiliser. On parie ?
Programme PC :
Code : Tout sélectionner
///////////////////////////////////////////////////////////////////////////////
// SDDRIVE_VIDEO_GENERATION.C Preparation fichier .sd pour video avec sddrive
///////////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
FILE *fbin;
FILE *fraw;
char ecran[8000]; //ecran Thomson
char cible[8000]; //image a afficher
//Chargement d'un fichier .bmp ///////////////////////////////////////////////
void Loadbmp(int frame)
{
FILE *fbmp;
char filename[256];
sprintf(filename, "%04i.bmp", frame);
printf("frame %s ", filename);
fbmp = fopen(filename, "rb");
if(fbmp == NULL) printf("Erreur d'ouverture");
fseek(fbmp, 0x3e, SEEK_SET);
fread(cible, 8000, 1, fbmp);
fclose(fbmp);
printf("\n");
}
//Generation d'un fichier video //////////////////////////////////////////////
void Video(char *name, int maxframe)
{
int i; //indice de boucle
int time; //temps ecoule depuis le debut de la video
int frame; //numero de l'image en cours de traitement
int index; //index dans l'ecran Thomson
int saut; //nombre d'octets non modifies
int octet; //numero d'octet dans le bloc
int son; //echantillon de son sur 6 bits
char filename[256];
//initialisations
sprintf(filename, "%s.bin", name);
fbin = fopen(filename, "wb"); //fichier video pour sddrive_video
strcpy(filename, name);
sprintf(filename, "%s.raw", name);
fraw = fopen(filename, "rb"); //fichier son en entree
time = frame = saut = octet = 0;
for(i = 0; i < 8000; i++) ecran[i] = cible[i] = 0;
index = -1;
//boucle de conversion
while(frame < maxframe) //pour toutes les images de la video
{
index++;
if(index == 8000) index = 0; //retour en debut d'ecran
saut++;
if(ecran[index] == cible[index]) //pas de difference
if(saut < 255) continue; //si le saut est <255 ne rien faire
son = fgetc(fraw); //lecture echantillon son
fputc(son, fbin); //ecriture echantillon son
fputc(saut, fbin); //ecrire le saut dans le fichier
fputc(cible[index], fbin); //ecrire le nouvel octet dans le fichier
ecran[index] = cible[index]; //mettre a jour la valeur de l'ecran
saut = 0; //remettre le saut a zero
octet += 3; //compteur d'octets dans le bloc
if(octet == 510) //deux derniers octets du bloc
{
son = fgetc(fraw); //lecture echantillon son
fputc(son, fbin); //ecriture echantillon son
son = fgetc(fraw); //lecture echantillon son
fputc(son, fbin); //ecriture echantillon son
octet = 0; //raz compteur d'octets
time += 33321; //temps ecoulé en cycles
if(time > 40000 * frame) Loadbmp(++frame); //nouvelle image
}
}
//ajout de deux octets de fin et fermeture des fichiers
fputc(0, fbin); //indicateur de fin de video
fputc(0, fbin); //octet inutilise
fclose(fraw);
fclose(fbin);
}
///////////////////////////////////////////////////////////////////////////////
// Programme principal
///////////////////////////////////////////////////////////////////////////////
int main()
{
Video("cat", 1810); //nom du fichier et nombre d'images
system("pause");
return 0;
}
Programme Thomson :
Code : Tout sélectionner
/**************************************************\
* S D D R I V E _ V I D E O *
* (c) 2018 - Daniel Coulom *
* http://dcmoto.free.fr/ *
* http://forum.system-cfg.com/ *
*--------------------------------------------------*
* Ce code est distribue gratuitement dans l'espoir *
* qu'il sera utile, mais sans aucune garantie et *
* sans engager la responsabilité de l'auteur. *
* Vous pouvez l' utiliser, le modifier et le *
* diffuser librement, en conservant cette licence *
* et les références de l'auteur dans toutes les *
* copies. L'exploitation commerciale est interdite.*
\**************************************************/
* Ce programme utilise le controleur et l'interface
* SDDRIVE pour afficher une video en streaming.
* Le chargement et le lancement du programme sont
* realises grace a un secteur de boot.
/**************************************************\
* Version 2018.07.14 *
\**************************************************/
* Historique
* 2018.07.14 adresse SD_LB0 calculee selon version
* 2018.07.02 deplacement de la zone SD_LB0 en <$51
* 2018.02.04 ajout du son
* 2018.02.03 debut du developpement
*------------------------------------------------------
* DEBUT DU PROGRAMME
*------------------------------------------------------
ORG $9900
BRA INIT initialisations
*------------------------------------------------------
* FONCTION D'ACCES A LA CARTE SD
*------------------------------------------------------
CMD18
FCB $52 read multiple block
FDB $0000 adresse bloc (poids fort)
FDB $0000 adresse bloc (poids faible)
FCB $FF checksum non testee
FCB $00 code retour attendu
CMD12
FCB $4C stop transmission
FDB $0000 dummy parameter
FDB $0000 dummy parameter
FCB $FF checksum non testee
FCB $00 code retour attendu
*------------------------------------------------------
* MACRO DE LECTURE D'UN OCTET AVEC SDDRIVE
* Le registre A doit contenir $7F avant l'appel
* Valeur de l'octet dans le registre B en sortie
* Duree totale de la lecture = 48 cycles
*------------------------------------------------------
READ_BYTE MACRO
CMPA <$BF lecture bit 7 (4)
ROLB pousser dans B (2)
CMPA <$BF lecture bit 6 (4)
ROLB pousser dans B (2)
CMPA <$BF lecture bit 5 (4)
ROLB pousser dans B (2)
CMPA <$BF lecture bit 4 (4)
ROLB pousser dans B (2)
CMPA <$BF lecture bit 3 (4)
ROLB pousser dans B (2)
CMPA <$BF lecture bit 2 (4)
ROLB pousser dans B (2)
CMPA <$BF lecture bit 1 (4)
ROLB pousser dans B (2)
CMPA <$BF lecture bit 0 (4)
ROLB pousser dans B (2)
ENDM
*------------------------------------------------------
* MACRO D'ENVOI DE 8 TOPS D'HORLOGE
* Le registre B doit contenir $7F avant l'appel
* Duree totale de la macro = 32 cycles
*------------------------------------------------------
SEND_CLOCK MACRO
CMPB <$BF lecture bit 7 (4)
CMPB <$BF lecture bit 6 (4)
CMPB <$BF lecture bit 5 (4)
CMPB <$BF lecture bit 4 (4)
CMPB <$BF lecture bit 3 (4)
CMPB <$BF lecture bit 2 (4)
CMPB <$BF lecture bit 1 (4)
CMPB <$BF lecture bit 0 (4)
ENDM
*------------------------------------------------------
* DETECTION DU TYPE D'ORDINATEUR TO OU MO
*------------------------------------------------------
INIT
ORCC #$50 desactive les interruptions
LDA >$FFF2 $FFF2: $F0(MO) et $70(TO)
BPL INIT3 TO detecte
*------------------------------------------------------
* Initialisations communes MO5-MO6
*------------------------------------------------------
LDU #$A7C0 adresse selection banque video
LDY #$0000 adresse debut ecran
LDB #$07 octet couleur
BSR COLOR initialisation couleurs
LDA >$FFF0 type d'ordinateur
BNE INIT2 MO6
*------------------------------------------------------
* Initialisations MO5
* Attention aux differences PIA systeme MO5 et MO6
*------------------------------------------------------
INIT1
LDA >$A7C0 port A du PIA systeme
ANDA #$E1 raz couleur cadre
ORA #$0E couleur cadre 7 (blanc)
STA >$A7C0 change couleur cadre
BRA INIT8 suite des initialisations
*------------------------------------------------------
* Initialisations MO6
* Attention aux differences PIA systeme MO5 et MO6
*------------------------------------------------------
INIT2
LDA #$07 couleur cadre 7 (blanc)
STA >$A7DD change couleur cadre
LDA >$A7C0 PIA systeme
ANDA #$FB clear mute bit
STA >$A7C0 modification PIA
BRA INIT8 suite des initialisations
*------------------------------------------------------
* Initialisations communes TO7-TO8
*------------------------------------------------------
INIT3
LDU #$E7C3 adresse selection banque video
LDY #$5F40 adresse fin ecran
STY VIDEO3+2 initialisation adresse fin ecran
LDY #$4000 adresse debut ecran
STY VIDEO+1 initialisation adresse debut ecran
LDB #$C7 octet couleur
BSR COLOR initialisation couleurs
LDA #$E0 valeur adresse EXCMD (poids fort)
STA READ+4 adresse execution EXCMD (pour CMD18)
STA FIN+4 adresse execution EXCMD (pour CMD12)
LDA >$FFF0 type d'ordinateur
BEQ INIT4 TO7=0
DECA retrancher 1
BEQ INIT4 TO7/70=1
BRA INIT5 TO8=3
*------------------------------------------------------
* Initialisations TO7
*------------------------------------------------------
INIT4
LDA >$E7C3 port A du PIA systeme
ORA #$70 couleur cadre 7 (blanc)
STA >$E7C3 change couleur cadre
BRA INIT8 suite des initialisations
*------------------------------------------------------
* Initialisations TO8
*------------------------------------------------------
INIT5
LDA #$07 couleur cadre 7 (blanc)
STA >$E7DD change couleur cadre TO8
BRA INIT8 suite des initialisations
*------------------------------------------------------
* Initialisation couleur noir/blanc (Y = debut ecran)
* suivie de l'initialisation forme a zero
* Adresse du bit de selection banque video dans U
* Adresse octet couleur dans B
*------------------------------------------------------
COLOR
LDA ,U octet de selection banque video
ANDA #$FE clear bit 0
STA ,U selection video couleur
LDX #$1F40 compteur de boucles
TFR B,A code couleur sur deux octets
COLOR1
STD ,Y++ initialise deux octets
LEAX -2,X comptage
BNE COLOR1 boucle
INC ,U selection video forme
LDX #$1F40 compteur de boucles
CLRA code forme
CLRB sur deux octets
LEAY -$1F40,Y adresse debut ecran
FORME
STD ,Y++ initialise deux octets
LEAX -2,X comptage
BNE FORME boucle
RTS
*------------------------------------------------------
* Initialisations communes
*------------------------------------------------------
* Calcul adresse SD_LB0 selon version controleur SDDRIVE
* L'adresse de SD_LB0 passe de $208E-$608E a $2051-$6051
* pour tous les controleurs a partir de juillet 2018
INIT8
TFR DP,A valeur de DP dans A
LDB #$51 adresse de SD_LB0 version recente
TFR D,X stockee dans le registre X
LDB <$58 SD_SEL contient $55 depuis 20180702
CMPB #$55 test version 20180702 ou plus recente
BEQ INIT9 version recente
LDB #$8E adresse SD_LB0 des versions anciennes
TFR D,X stockage dans le registre X
* Initialisation adresse du fichier .sd pour CMD18
INIT9
LDD ,X octets poids fort adresse
STD CMD18+1 stockage pour commande CMD18
LDD 2,X octets poids faible adresse
STD CMD18+3 stockage pour commande CMD18
* Initialisation CNA en sortie
TFR DP,B valeur actuelle de DP
ADDB #$87 $A7 pour MO et $E7 pour TO
TFR B,DP initialisation DP
LDA <$CF lecture registre de controle B
ANDA #$FB raz bit 2
STA <$CF selection DDRB
LDB #$3F set bits 0-5
STB <$CD bits CNA en sortie
ORA #$04 set b2
STA <$CF selection PB
*-------------------------------------------------------
* Lancement de la commande CMD18 et saut de huit blocs
*-------------------------------------------------------
READ
LDU #CMD18 adresse commande CMD18
JSR $A028 EXCMD = execution commande
* READ+4 modifie en $E028 pour TO
BSR SAUT lecture bloc (secteur de boot)
BSR SAUT lecture bloc (secteur sdplay)
BSR SAUT lecture bloc (secteur sdplay)
BSR SAUT lecture bloc (secteur sdplay)
BSR SAUT lecture bloc (secteur sdplay)
BSR SAUT lecture bloc (secteur sdplay)
BSR SAUT lecture bloc (secteur sdplay)
BSR SAUT lecture bloc (secteur sdplay)
BRA VIDEO jouer la video
*------------------------------------------------------
* Saut d'un bloc de la carte SD
*------------------------------------------------------
SAUT
LDA #$7F initialiser A pour lecture
READ_BYTE lecture d'un octet
CMPB #$FE comparaison avec $FE
BNE SAUT attente debut secteur
LDX #$0200 initialisation compteur
SAUT1
READ_BYTE lecture d'un octet
LEAX -1,X decrementation compteur
BNE SAUT1 nouvelle lecture
READ_BYTE lecture d'un octet
READ_BYTE lecture d'un octet
RTS retour
*------------------------------------------------------
* FIN DU PROGRAMME
*------------------------------------------------------
FIN
* arret de la lecture
LDU #CMD12 adresse commande CMD12
JSR $A028 EXCMD = execution commande CMD12
* FIN+6 modifie en $E028 pour TO
* recommencer la lecture du fichier
LEAS 1,S retablir pointeur pile systeme
LDX #READ adresse du debut du programme
PSHS X empiler pour retour au debut
RTS
*-----------------------------------------------------
* Affichage de la video
* 53*2+8+194*170+227 = 106+8+32980+227 = 33321 µs/bloc
* 172 echantillons 5162 Hz
*-----------------------------------------------------
VIDEO
LDU #$0000 adresse memoire video
LEAU -1,U initialiser a l'adresse precedente
LDA #$7F initialisation pour lecture octet
VIDEO1
READ_BYTE lecture octet (48)
CMPB #$FE test debut de bloc (2)
BNE VIDEO1 attente debut de bloc (3)
LDB #$AA compteur de boucle 170 (2)
PSHS B empilage compteur (6)
VIDEO2
LDA #$7F initialisation lecture octet (2)
READ_BYTE lecture de octet son (48)
STB <$CD envoi echantillon (4)
READ_BYTE lecture octet saut (48)
BEQ FIN fin du fichier video (3)
CLRA saut poids fort (2)
LEAU D,U adresse courante dans écran (8)
VIDEO3
CMPU #$1F40 test de fin ecran (5)
BLO VIDEO4 lire et afficher un octet (3)
LEAU -$1F40,U retour au debut (8)
VIDEO4
LDA #$7F initialisation lecture octet (2)
READ_BYTE lecture octet forme (48)
STB ,U affichage octet forme (4)
DEC ,S decrementation compteur (6)
BNE VIDEO2 fin du bloc (3)
VIDEO5
PULS B depilage compteur (6)
LDA #$7F initialisation lecture octet (2)
READ_BYTE lecture octet son (48)
STB <$CD envoi echantillon (4)
READ_BYTE lecture octet son (48)
PSHS B empilage echantillon (6)
LDA #$7F initialisation lecture octet (2)
READ_BYTE premier octet de CRC (48)
READ_BYTE deuxieme octet de CRC (48)
PULS B depilage dernier echantillon (6)
STB <$CD envoi echantillon (4)
LBRA VIDEO1 bloc suivant (5)
END
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] SDDRIVE
Top,
j'vais essayer de me débrouiller avec ça, merci à vous deux.
ps : j'adore le "Du coup, pour me venger voici le fichier SD sans protection" !!!!
j'vais essayer de me débrouiller avec ça, merci à vous deux.
ps : j'adore le "Du coup, pour me venger voici le fichier SD sans protection" !!!!
Re: [Thomson] SDDRIVE
Tiens d'ailleurs si vous avez d'autres liens "off" de clips pour sddrive je suis preneur. Mes enfants adorent (5 ans & 2,5 ans).
ils aiment bien bad apple, simons cat, et nyan cat
ils aiment bien bad apple, simons cat, et nyan cat
Re: [Thomson] SDDRIVE
C'est quoi cette histoire de fichier SD sans protection ? Les démonstrations pour SDDRIVE ne sont pas protégées. Ce n'est pas le genre de __sam__ ni le mien. Au contraire nous cherchons toujours à expliquer les techniques utilisées et nous communiquons volontiers toutes les sources.
Les vidéos pour SDDRIVE vont se faire rares, car maintenant les développeurs lui préfèrent SDSTREAM.
J'ai donné un exemple dans le fil dédié : viewtopic.php?f=25&t=10991
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] SDDRIVE
Daniel, c'était en réponse d'une censure de google par rapport à une vidéo posté par sam sur youtube !
Ah je ne savais pas que sdstream était remplacé (ou ce n'est pas le cas ?) par sddrive.
Ah je ne savais pas que sdstream était remplacé (ou ce n'est pas le cas ?) par sddrive.
Re: [Thomson] SDDRIVE
Ah non, SDSTREAM n'est pas remplacé, au contraire c'est tout nouveau, et pas du tout en concurrence avec SDDRIVE.
SDSTREAM n'émule pas les disquettes, c'est seulement une mémoire de masse séquentielle à accès rapide en lecture seule. Idéale pour la vidéo et la musique, mais pas seulement.
SDSTREAM n'émule pas les disquettes, c'est seulement une mémoire de masse séquentielle à accès rapide en lecture seule. Idéale pour la vidéo et la musique, mais pas seulement.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] SDDRIVE
Ah ok. Honnêtement je me perds un peu parfois.
Ayant SDDRIVE je voulais juste à la base, ripper https://www.youtube.com/watch?v=_ZKZ_lQ5FWQ pour la faire tourner sur mon thomson sddrive!!!
Je me demande du coup si il n'y a pas moyen de faire une super sddrive qui fait tout ça !?!
Ayant SDDRIVE je voulais juste à la base, ripper https://www.youtube.com/watch?v=_ZKZ_lQ5FWQ pour la faire tourner sur mon thomson sddrive!!!
Je me demande du coup si il n'y a pas moyen de faire une super sddrive qui fait tout ça !?!
Re: [Thomson] SDDRIVE
J'ai peur que ce clip ne soit pas très spectaculaire après réduction en 320x200, même avec le talent de __sam__
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: [Thomson] SDDRIVE
bha c'est pour les enfants, ils imaginent beaucoup. Après avoir vu bad apple sur to et sur pc, ils reviennent sur to !
je ne veux pas rater cette occasion !
je ne veux pas rater cette occasion !