[SERVEUR TELETEL] Rien que pour le fun

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Carl, Papy.G, fneck

Répondre
Avatar du membre
6502man
Messages : 9374
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

[SERVEUR TELETEL] Rien que pour le fun

Message par 6502man » 01 avr. 2015 15:44

Suite à la visu et les tests de serveur minitel/teletel, j'ai voulu m'amuser à recréer un serveur teletel sur un TO8, grâce au modem prêté par PetitJD (encore merci).

Donc j'ai préparé quelques services sur ce serveur après quelques tests concluant je vous propose de le tester avec votre matériel, ca passe très bien à travers les BOX (testé avec ORANGE et BOUYGUES), et la cout de la communication est gratuite si vous avez un forfait illimité vers les fixes, j'ai bien, vérifier sur mon espaces clients et il n'y a aucun frais de communication :wink:

J'ai pu faire le test avec un Minitel 1 et un PC portable sous XP avec un modem analogique en utilisant Hyper terminal et TIMTEL 56K, ca fonctionne bien sauf l'affichage semi graphique avec hyper terminal puisque il n'y a pas la police (introuvable) "Arial Alternative Symbol".

Vous pouvez préparer votre Minitel, Exeltel, TO7/8, Ordinateur avec modem analogique (je peux fournir Timtel pour Windows)....

Je pense pouvoir le mettre en test pour la fin de la semaine ou semaine prochaine, je vous indiquerais en MP le numéro de Téléphone à ceux intéressé par ce test.

20150327_192535.jpg
20150327_192535.jpg (246.82 Kio) Vu 2298 fois
20150327_192543.jpg
20150327_192543.jpg (236.32 Kio) Vu 2298 fois
Modifié en dernier par 6502man le 01 avr. 2015 19:12, modifié 2 fois.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Daniel
Messages : 11610
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par Daniel » 01 avr. 2015 16:51

Je vous disais qu'à la dernière visu nous avions fait des projets fous. Celui-ci est encore raisonnable, mais il y en aura d'autres :wink:

Questions techniques :
- Le Minitel client fonctionne en passant par une ligne ADSL, mais le serveur est-il aussi connecté à un modem ADSL, ou à une ligne analogique ?
- Avec une seule ligne côté serveur, il ne peut admettre qu'une connexion à la fois. Mais avec plusieurs lignes, y aurait-il un moyen d'avoir plusieurs clients connectés en même temps (pas servis simultanément, bien sûr, mais l'un après l'autre, sans qu'il soit nécessaire de raccrocher) ?
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
6502man
Messages : 9374
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par 6502man » 01 avr. 2015 17:01

Le serveur est sur une ligne analogique ;)

Une seule connexion simultanément, et le serveur sur TO8 ne permet pas plusieurs connexions je vois pas comment puisque un seul modem connecter au port d'extension et le logiciel serveur ne permet pas plusieurs connexions de toutes façon.

la seule solution avec TO8 c'est :

- plusieurs lignes
- plusieurs TO8 avec modem
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

petitjd
Messages : 1826
Enregistré le : 23 oct. 2007 11:50

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par petitjd » 01 avr. 2015 18:32

En fait j'avais demandé à Daniel s'il était possible de partager une carte SD entre plusieurs TO.
Ca semble être faisable mais à condition d'utiliser un micro controleur genre Arduino.

L'idée un peu folle qui m'avait traversé l'esprit à ce moment là était la suivante:

-On a autant de TO8 serveur minitel avec un modem chacun.
-On a une mémoire de masse commune entre ces TO8 qui héberge les pages du serveur minitel
-Chaque TO8 accede à ces pages via la SD

Ces TO8 sont reliés à une passerelle analogique / VoIP avec un compte SIP qui accepte autant de communication sur le même numero que le compte SIP peut accepter.

A cette idée folle il y a deux problèmes (en plus du fait qu'elle est folle):
-Interfacer la SD avec plusieurs TO
-Savoir s'il est possible de router le même compte SIP vers les différents ports analogiques de la passerelle analogique / VoIP. La passerelle gèrera-t-elle les communications simultannées, c'est à dire saura-t-elle détecter que le port analogique 1 est en communication et passera l'appel à un autre port je n'en ai aucune idée.
Je n'ai fait ca qu'avec une passerelle connectée à un seul fax analogique.

Bon je vous avais prévenu, c'est une idée folle, donc à ne pas suivre bien évidemment :mrgreen:
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr

Daniel
Messages : 11610
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par Daniel » 01 avr. 2015 19:02

Il a deux idées, l'une est un peu folle et l'autre mérite d'être creusée.

L'idée folle est de vouloir partager une carte SD par plusieurs TO8. Ca ne peut pas se faire directement, il faudrait gérer le partage par un microcontrôleur ou un ordinateur qui communiquerait séparément avec chaque TO8 par liaison SPI. Je ne sais pas quel fou voudrait se lancer dans un tel développement. Pas moi :wink:

L'autre idée est de mettre plusieurs TO8, avec chacun son modem et sa ligne analogique, et de router chaque nouvel appel vers la première ligne libre. Mes compétences sont nulles dans ce domaine, je ne sais pas répondre, mais c'est peut-être moins fou que la première idée.
Daniel
L'obstacle augmente mon ardeur.

petitjd
Messages : 1826
Enregistré le : 23 oct. 2007 11:50

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par petitjd » 01 avr. 2015 19:11

Daniel a écrit :Je ne sais pas quel fou voudrait se lancer dans un tel développement. Pas moi :wink:
Moi non plus! Je n'en ai pas les compétences et je suis déjà suis un truc suffisamment fou pour mon niveau!
Mais je peux toujours creuser le coup de la passerelle.
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr

Avatar du membre
6502man
Messages : 9374
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par 6502man » 01 avr. 2015 19:13

J'ai édité le premier message du post, les photos ne s’affichait pas !
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

__sam__
Messages : 4589
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par __sam__ » 01 avr. 2015 21:22

Si cela peut vous servir, voici un petit programme que j'ai fait pour la Forever-Party 2015 mais dont je n'ai pas su quoi faire au final. Il prend en entrée des images, et met en sortie dans le dossier "rgb", une version télétel des images.

Code : Tout sélectionner

#/bin/perl
#
# Conversion d'image true-color vers teletel
#
# (c) Samuel Devulder, Fevrier-Mars 2015
#

#use Graphics::Magick;
use Image::Magick;
use MIME::Base64 qw( encode_base64 );

@glb_files = @ARGV;
if(!@glb_files) {
	print "No file found, reading from STDIN...";
	while(<STDIN>) {
		chomp;
		y%\\%/%;
		s%^([\S]):%/cygdrive/$1%;
		push(@glb_files, $_);
	}
	print "done\n";
}


# creation dossier de sortie
mkdir("rgb") || die "rgb: $!" unless -d "rgb";
for my $i (0..$#glb_files) {
	my $file = $glb_files[$i];

	my $out = $file;
	$out =~ s/.*[\\\/]//;
	next if $out =~ /\.(txt|htm.*|ps|pdf)$/i;
	next if $out =~ /rgb/;
	print 1+$i,"/",1+$#glb_files," ",$file,"\033]0;$out\007\n";
	$out =~ s/[\.][^\.]*//;
	$out = "rgb/$out.png";
	next if -f $out;
	
	my $conv = &convert($file);
	next unless $conv;
	
	$conv->Write($out);
	undef $conv;
	sleep(2);
}

sub convert {
	my($file) = @_;

	# read image
	my $img = Image::Magick->new();
	my $x=$img->ReadImage($file); 
	if($x) {print STDERR $x; return undef;}
	
	$img->Trim();
	$img->Set(depth=>16);
	$img->Set(colorspace=>"RGB");
	$img->Gamma(gamma=>1.3);
	$img->AutoLevel();
	$img->Normalize();
	$img->Modulate(saturation=>200);
	$img->Resize(geometry=>"320x200!");

	#sleep(15);

	# creation image 80x75
	my @orig = $img->GetPixels(map=>"RGB", height=>200, width=>320, normalize=>"True");
	my @px;
	for(my $y=0; $y<200;) {
		my $h = ($y&7)==3?2:3;
		
		for(my $x=0; $x<960; $x+=12) {
			my($r,$g,$b) = (0,0,0);
			for (my $i=$x; $i<$x+12; $i+=3) {
				for my $j ($y..$y+$h-1) {
					$r += $orig[$j*960+$i+0];
					$g += $orig[$j*960+$i+1];
					$b += $orig[$j*960+$i+2];
				}
			}
			push(@px, $r/(4*$h), $g/(4*$h), $b/(4*$h));
		}
		
		$y+=$h;
	}

	# ajout du dither
	my @dither = ([1/7, 5/7], [3/7, 4/7], [6/7, 2/7]);
	#@dither = ([1/5,4/5], [1/5,2/5],  [3/5,2/5]);
	#@dither = ([1/7, 5/7], [2/7, 4/7], [6/7, 3/7]);
	@dither = ([3/17, 16/17], 
	           [8/17, 10/17], 
		   [13/17, 6/17]) if 0;

	@dither = ([3/17, 16/17], 
	           [10/17, 5/17], 
		   [13/17, 8/17]) if 0;

	@dither = ([14/17, 8/17], 
	           [2/17, 16/17], 
		   [11/17, 5/17]) if 0;

		   
	for my $y (0..74) {
		for my $x (0..79) {
			my $d = $dither[$y%3][$x&1];
			my $p = ($x+$y*80)*3;
			$px[$p+0] += $d;
			$px[$p+1] += $d;	
			$px[$p+2] += $d;
		}
	}

	# conversion
	my @conv = (0)x(75*80);
	for my $y (0..24) {
		for my $x (0..40) {
			my(@bloc);
			for my $j ($y*3..$y*3+2) {for my $i ($x*2..$x*2+1) {
				my $p = ($i + $j*80)*3;
				push(@bloc, @px[$p..$p+2]);
			}}
			my($c1, $c2) = &find(\@bloc);
			for my $j ($y*3..$y*3+2) {for my $i ($x*2..$x*2+1) {
				my $p = ($i + $j*80);
				my($d, $c) = &match($c1, $c2, \@px, $p*3);
				$conv[$p] = $c;
			}}
		}
	}

	# generation image sortie
	my @out;
	for my $y (0..74) {
		my @l;
		for my $x (0..79) {
			my $p = $conv[$x + $y*80];
			push(@l, (($p & 1)?255:0, ($p & 2)?255:0, ($p & 4)?255:0) x 4);
		}
		
		push(@out, (@l) x ($y%3==1?2:3));
	}

	# sortie
	open(OUT, '>.toto.pnm'); print OUT "P6\n320 200\n255\n",pack('C*', @out),"\n"; close(OUT);
	$img = Image::Magick->new();
	$img->ReadImage(".toto.pnm");
	unlink(".toto.pnm");
	
	return $img;
}

sub find {
	my($px) = @_;
	
	my %c;
	for(my $i=0; $i<6*3; $i+=3) {
		$c{($px->[$i+0]>=1?1:0)+($px->[$i+1]>=1?2:0)+($px->[$i+2]>=1?4:0)} = 1;
	}
	my @c = keys %c;
	push(@c, 0) if $#c==0;
	if($#c>=2) {
		my($bd) = 1e38;
		@c = (0,0);
		for my $c1 (0..6) {for my $c2 ($c1+1..7) {
			my $d = &dist($c1, $c2, $px);
			if($d<$bd) {$bd = $d; @c = ($c1, $c2);}
		}}
	}
	
	#print join(',', @c), "\n";
	
	return @c;
}

sub dist {
	my($c1, $c2, $px) = @_;
	
	my $d = 0;
	for(my $i=0; $i<6*3; $i+=3) {
		my ($t, $ignore) = &match($c1, $c2, $px, $i);
		$d += $t;
	}
	return $d;
}

sub match {
	my($c1, $c2, $px, $o) = @_;

	my $d1 = ($px->[$o+0] - ($c1&1?2:0))**2 + ($px->[$o+1] - ($c1&2?2:0))**2 + ($px->[$o+2] - ($c1&4?2:0))**2;
	my $d2 = ($px->[$o+0] - ($c2&1?2:0))**2 + ($px->[$o+1] - ($c2&2?2:0))**2 + ($px->[$o+2] - ($c2&4?2:0))**2;
	
	return $d1<$d2 ? ($d1, $c1) : ($d2, $c2);
}
Il n'est pas terminé car il faudrait qu'il produise le fichier texte en sorti, mais ca n'est pas trop difficile à adapter. Pour les images, il fait ce qu'il peut étant donné la résolution, mais on a parfois de bonnes surprises.
Beautiful-Long-Eye-Lashes.png
Beautiful-Long-Eye-Lashes.png (1.58 Kio) Vu 2278 fois
images (9).png
images (9).png (1.9 Kio) Vu 2278 fois
newtekdigipaint.png
newtekdigipaint.png (1.73 Kio) Vu 2278 fois
(Les images ZX passent plutôt bien au travers du script)
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Avatar du membre
Papy.G
Modérateur
Messages : 1878
Enregistré le : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par Papy.G » 01 avr. 2015 21:57

6502man> Excellent, si tu prends les appels le soir après 20h30, le TO8 décroche automatiquement sur détection d'appel?

Tu ne pouvais pas te servir d'un Minitel comme modem? (tu dois bien en avoir un qui détecte les appels entrants)

Daniel> Selon l'essai de communication directe Minitel à Minitel mené récemment, le serveur peut être sur une ligne de box.

Pour les communications multiples, n'y a-t'il pas eu de micro-serveurs gérant plusieurs lignes? (Sur ST)

PetitJD> Te casses pas, pour ce que le protocole Videotexte est compliqué, il doit bien y avoir moyen de multiplexer les appels et n'avoir qu'un serveur, mais le code reste à écrire.

Pour ton idée de passerelle analogique et identification de passerelle occupée, saches qu'un minitel (qui peut servir de modem) sait détecter un appel entrant durant une communication, je ne sais plus s'il le reporte vers le port série, mais en tout cas, il l'affiche.
Sinon, on peut peut-être envisager une cascade de portables avec report si occupé, mais bonjour la facture, et reste à tester si l'on peut passer par un portable (modem acoustique ou adaptateur d'impédance/tensions). Déjà, chez quelq'un ayant conservé FT en plus de sa box, on a deux lignes, reste à voir si le SIP prend le relais lorsque les deux premières sont occupées.

6502man> Il faut programmer sur Minitel directement on a un modem interne, et un autre Minitel via le port série offre l'accès à une deuxième ligne.
Ensuite, un serveur minitel, c'est:

1 Envoi d'une page écran (données d'affichage)
2 Attente d'un code signalant une action
3 Code reçu, retour à la première ligne

Bon, là, j'y vais à la louche, il y a des protocoles pour l'encodage, les filtres caractères commande/affichables, la prise de ligne et raccroché en fin de communication, les détections d'erreurs et demandes de répétition, beaucoup de choses prises en charge par le modem habituellement
Aussi, ça se complique légèrement avec les formulaires et les pages dynamiques.

sam> Excellent, je ferais bien mon Defcard en te demandant de nous le refaire pour une contrainte 4 couleurs parmi 8 dans des dalles de 4 par 5, 40 dalles sur 24 lignes. :oops:
Si je me bouge mon … , je me le ferais moi-même, en assembleur MCS51, mais il y a du chemin, je ne sais déjà pas, à l'heure actuelle, comment sont organisées les données d'un fichier Gif, BMP ou JPG, alors, de là à les traiter … :roll:
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

Avatar du membre
6502man
Messages : 9374
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par 6502man » 01 avr. 2015 22:26

@Sam: très bonne idée, on pourrait rajouter un service spécial "slideshow" avec les meilleurs images converti au format VIDEOTEXT.
Le format est spécifique ce n'est pas du bitmap ni du texte "brut" mais plus une suite d'attributs et caractères !
La taille de l'écran Minitel est 40x25 avec des dalles de 2x3 redéfinissables.

@Papy.G: oui je mettrais en fonction le serveur le soir entre 19H-23Hxx .
On peut aussi utiliser le Modem du Minitel avec un PC pour se connecter il suffit d'un câble série adapté.
Programmer le Minitel pour en faire un serveur, c'est une idée rigolote mais j'ai déjà pas mal de trucs en cours alors ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
Papy.G
Modérateur
Messages : 1878
Enregistré le : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par Papy.G » 01 avr. 2015 22:56

J'en ai deux, de ces câbles, dont un encore dans l'emballage, comme je n'ai pas de RS232 à la maison, j'en garde un au cas où, mais l'autre... ;)
Ben, en fait, dans mon projet, j'aimerais faire un environnement où, pour simplifier l'interfaçage avec les postes distants (un via Modem, un via série) et uniformiser avec le local, je pense faire un mode "vidéotexte interne", et le système reçoit les frappes touches et renvoie l'affichage de la même façon quel que soit le poste, il n'a qu'à aiguiller vers modem/port série/routine d'affichage interne. ;)
Certes, ça limite ce mode à 40 colonnes (pour un max de compatibilité), mais le fun envisageable avec trois minitels, dont un seul a besoin d'être modifié. :mrgreen:

Ensuite, peuvent être envisagées les communications étendues "à travers" les minitels connectés au plus prés, si cela est exploitable (difficulté à identifier l'origine d'une commande, limites de vitesse de connexion).
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

__sam__
Messages : 4589
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par __sam__ » 01 avr. 2015 23:25

@6502man: si tu regardes attentivement les images, elles sont au format teletel thomson: 40x25 dalles, 2 couleurs par dalles, et 2x3 pixels sur une dalle.

Pour le minitel, quels sont les séquences d'échappement (passage en mode semi-graphique, changement de couleur, etc) ? Si c'est les mêmes que celles thomson (http://pulkomandy.tk/wiki/doku.php?id=d ... aractermap), alors c'est bon je dois pouvoir produire un fichier correct.

@Papy.G: 4 couleurs par dalles de 4x5 ? Ah tiens je ne connais pas. Il y a une spec avec ce mode semi-graphique pour minitel?
Fichiers joints
vues-pin-up-43571450bb-img.png
Pinup
vues-pin-up-43571450bb-img.png (1.73 Kio) Vu 2257 fois
purple-rose-pretty-beautiful.png
minitel rose?
purple-rose-pretty-beautiful.png (1.58 Kio) Vu 2257 fois
merryxmasandhappynewyea.png
C'est noel dans le minitel
merryxmasandhappynewyea.png (2.53 Kio) Vu 2257 fois
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Avatar du membre
Papy.G
Modérateur
Messages : 1878
Enregistré le : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par Papy.G » 01 avr. 2015 23:52

Pour les codes escpe, sur Mille Vaches, c'est ce qu'il y a de plus complet sans se coltiner les STUM et STURM. L'ordre des valeurs doit être l'ordre des nuances de gris, mais attention, la progression n'est pas linéaire. Il y a aussi la répétition de caractère x fois, permettant de gagner un temps précieux sur le transfert, peut-être pas supportée par les plus anciens modèles. ;)

Nan, Y'a pas ces specs, mais je pense que le matériel doit pouvoir le faire, si l'on met autre chose que la rom d'origine. :mrgreen:
Il y a un mode JPEG sur les plus récents des minitels, mais c'est peu documenté, et d'un faible intérêt, vu le peu d'appareils le supportant, mais il y a le DRCS, sur les Minitels 2 et 12, qui doit pouvoir permettre d'affiner certaines zones, lorsque une dalle ne contient que deux couleurs.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

__sam__
Messages : 4589
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par __sam__ » 02 avr. 2015 00:43

Bonne nouvelle, ca me semble correspondre aux codes d'échappement standards thomson, y compris le chr$(18)+chr$(64+n) qui répète n-fois le dernier caractère affiché. Je vais modifier le script dès que possible pour qu'il crée un fichier TXT à coté des png de sortie.

En attendant, et comme ca va être pâques, voici une petite surprise.
easter-babies-eggs-colorful.png
C'est bientôt pâques.
easter-babies-eggs-colorful.png (1.98 Kio) Vu 2256 fois
extrait_o-brother-where-art-thou_4.png
Un de mes films préférés
extrait_o-brother-where-art-thou_4.png (1.94 Kio) Vu 2256 fois
A noter: sur thomson l'écran a un aspect 16:10, et les dalles sont carrées et font 8x8 px découpées en macro-pixels de 2x4 et 3x4 pixels-écrans, cad que les macro-pixels ne sont pas réguliers. Sur un vrai minitel, quel est l'aspect-ratio, 4:3 ou 16:10 ? Les dalles sont elles non carrées (style 9x6) avec des macros pixels réguliers (3x3 px) ou pas ?
Samuel.
A500 Vampire V2+, A1200(030@50mhz/fpu/64mb/cf 8go),
GVP530 (MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.

Avatar du membre
Papy.G
Modérateur
Messages : 1878
Enregistré le : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: [SERVEUR TELETEL] Rien que pour le fun

Message par Papy.G » 02 avr. 2015 02:08

Sur la plupart des minitels, les dalles font 8x10, et il existe un jeu de caractère ou les points sont détache
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.

Répondre