Logicielsmoto.com

Nous sommes le 28 Mar 2024, 23:13

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 19 messages ]  Aller à la page 1, 2  Suivante
Auteur Message
 Sujet du message: Mix ASM/Basic
MessagePosté: 10 Déc 2009, 15:48 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Salut!

En lisant http://pagesperso-orange.fr/gtello/cx07_f.htm, j'ai appris que sur cet ordi avec la bonne extension, on pouvait mixer l'asm et le basic. Ca donnait un code basic comme celui ci:
Code:
 0 CLS : GOTO 90
10 '[
20 'LD A.$11
30 'LD HL.#PX
40 'LD BC.$200
50 'CALL $C92F
60 'RET
70 '#PX DEFB &119,31
80 ']
90 PRINT"ASSEMBLAGE...":EXEC 11087
100 PRINT:PRINT"Execution..."
110 EXEC &H1C00
120 END

En fait les commentaires (') sont compilés en ASM.

Je trouve cette idée super!

Je me demande si on ne pourrait pas porter cette idée sur thomson. Imaginons le code basic suivant:
Code:
10 %a = &he7c3
20 exec &hABCD
30 ' LDX #%a
40 ' LDA ,X
50 ' ORA #1
60 ' STA ,X
70 ' END


$ABCD est en fait l'entrée dans un compilo ASM "dynamique". L'idée est que à la 1ere execution ou au reset, le compilo récupère le pointeur de lignes basic et compile les lignes "REM" qui suivent jusqu'au "END" et saute à l'endroit où il vient de compiler le code ASM. On aurait ainsi "inliné" le code ASM. C'est bien mais là ou c'est cool, c'est que sur un 2eme passage, le compilo s'aperçoive qu'il a déjà compilé les lignes ASM qui suivent (il y aurait un CRC pour s'apercevoir qu'on a rien changé au code) et sauterait directement à l'exécution.

Le truc qui serait pratique aussi, c'est qu'en fait si on fait référence à une var du basic (%a dans mon exemple), le compilo récupère l'EA de cette variable (peut être en ajoutant un code de glue qui appellerait varptr()). Ainsi le passage de parametre entre le basic et l'ASM serait super facilité.

Avec un truc pareil on aurait enfin un basic carrément cool et vraiment speed!

Bon je sais pas si c'est possible de faire cela. Mais il me semble que l'API du basic du thomson permet de faire des trucs vraiment rigolos. Personne n'a entendu parlé d'un truc autour de cette idée?

sam.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mix ASM/Basic
MessagePosté: 13 Déc 2009, 00:49 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Samuel Devulder a écrit:
Personne n'a entendu parlé d'un truc autour de cette idée?

Si. De compilateur Basic, entre autre...

... mais il y a toujours la possibilité de faire des lignes de 'DATA' avec les codes machine, de les implanter et de les exécuter.

En fait, implémenter ça dans le Basic reviendrait à faire beaucoup de code pour pas grand chose, vu que les programmeurs ne l'utiliseraient certainement pas pour les gros projets.

Ceci dit, le programme en assembleur que tu proposes peut s'exécuter aussi bien en Basic :
Code:
10 POKE &HE7C3, PEEK(&HE7C3) OR 1


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mix ASM/Basic
MessagePosté: 13 Déc 2009, 01:14 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Prehisto a écrit:
Samuel Devulder a écrit:
Personne n'a entendu parlé d'un truc autour de cette idée?

Si. De compilateur Basic, entre autre...


Ah oui.. pas mal! Ca à abouti à un truc?

Citation:
... mais il y a toujours la possibilité de faire des lignes de 'DATA' avec les codes machine, de les implanter et de les exécuter.


Oui mais c'est pas vraiment "maintenable". Ce que je pense qu'il soit important c'est: 1) facile à éditer et faire évoluer; 2) passage de params facile entre ASM et basic (idéalement on accede aux vars du basic de façon transparentes).

Citation:
En fait, implémenter ça dans le Basic reviendrait à faire beaucoup de code pour pas grand chose, vu que les programmeurs ne l'utiliseraient certainement pas pour les gros projets.


Oui.. il faudrait voir.. en fait le basic est tellement lent mais a des instructions evoluées pratiques... d'où la question d'un mix +/- facile à maintenir. Si on doit tout faire en ASM ca perd de son intérêt, mais sur des petits endroits précis ca peut être sympa (afficage des sprites par ex).

En fait ce qui serait bien c'est un defusr ( ;) ) qui ferait directement du code ASM symbolique présent dans le code source. Ca serait maintenable et ca permetrait d'implemter les trucs qui rament en basic (appelle de routines gfx ou de calculs couteux par ex).

Citation:
Ceci dit, le programme en assembleur que tu proposes peut s'exécuter aussi bien en Basic :
Code:
10 POKE &HE7C3, PEEK(&HE7C3) OR 1


Oui c'est juste un exemple. Mais même pour cela on se rend compte qu'en basic ca prend un temps fou.. en asm c'est quasi instantané. Si on doit l'appeler super souvent, ca serait bien de pouvoir l'écrire directement dans le code basic pour le faire évoluer.

En tout cas.. si j'avais eu un truc comme ca à l'époque je l'aurais utilisé pour y coller mes routines de calcul de mandelbrot hyper fast. En fait ce que je trouvais chiant à l'epoque était de développer en basic l'infrastructure du prog (la gestion du clavier et des I/O typiquement), puis switcher sur l'ASM (donc perdre le basic) pour developper les routines de calcul, rebasculer en basic pour mettre au point, retour à l'ASM etc.. sans arret va-et-vient entre asm/basic.. C'etait pas cool de ne pas avoir tout sous la main dans le même programme.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mix ASM/Basic
MessagePosté: 13 Déc 2009, 02:09 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Samuel Devulder a écrit:
Ah oui.. pas mal! Ca à abouti à un truc?

Rien de tangible, en ce qui me concerne. Je n'ai jamais eu un tel programme entre les mains. Mais j'ai entendu des choses...

Samuel Devulder a écrit:
1) facile à éditer et faire évoluer;

... mais pas facile à coder :) Rien n'empêche de fournir le code ASM avec le code Basic pour la maintenance.

Samuel Devulder a écrit:
En tout cas.. si j'avais eu un truc comme ca à l'époque je l'aurais utilisé pour y coller mes routines de calcul de mandelbrot hyper fast.

A mes débuts, je finissais par connaître les codes machine par coeur à force d'écrire mes programmes à la main sans l'Assembler... dont je me suis dépêché d'obtenir la cartouche par la suite. C'était le bon temps...

Samuel Devulder a écrit:
En fait ce que je trouvais chiant à l'epoque était de développer en basic l'infrastructure du prog (la gestion du clavier et des I/O typiquement), puis switcher sur l'ASM (donc perdre le basic) pour developper les routines de calcul, rebasculer en basic pour mettre au point, retour à l'ASM etc.. sans arret va-et-vient entre asm/basic.. C'etait pas cool de ne pas avoir tout sous la main dans le même programme.

Et la cassette ? Tu te souviens de la cassette ? :lol:

Passer du Basic à l'Assembler aller-retour, ça ne me dérange plus depuis longtemps. C'est même devenu une deuxième nature. Eteindre la machine pour changer de programme est inhérent à ces machines de petite capacité. Ca fait partie du processus et je m'y conforme sans peine. Et je ne pense pas que ce soit beaucoup plus lent. Surtout maintenant que l'on peut travailler sur émulateur, on a déjà beaucoup gagné en rapidité.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mix ASM/Basic
MessagePosté: 13 Déc 2009, 07:41 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Prehisto a écrit:
Rien de tangible, en ce qui me concerne. Je n'ai jamais eu un tel programme entre les mains. Mais j'ai entendu des choses...

Dommage. Cela dit ca me donne une idée pour mon basic pseudo-gfa avec lequel j'ai fait des raytraceurs et autre afficheurs nécessitant de la puissance....

Citation:
... mais pas facile à coder :)

Yep.. ca change rien à l'affaire ca :) J'ai jamais eu l'occasion de jouer avec des progs compilés en langage machine autre que l'ASM sur thomson. Je crois qu'il y avait du Pascal et du Forth. Ca donnait quoi?

Est-ce que les IDE (et le langage) étaient sympa (édition facile, insertion de code n'importe où aisée, scroll rapide, recherche de procédure efficace) ?

Est-ce que le code ASM tenait la route? Particulièrement: est-ce que le code ASM était banquable et pouvait tenir dans plus de 16ko avec appel croisé inter banques?

Citation:
A mes débuts, je finissais par connaître les codes machine par coeur à force d'écrire mes programmes à la main sans l'Assembler...

J'ai toujours codé en dur au niveau de la colonne vertébrale le
Code:
DATA B6,E7,C3
que je tape à toute vitesse (contrairement à mes progs actuels).

Citation:
Et la cassette ? Tu te souviens de la cassette ? :lol:

Oula oui.. et je te parle pas de l'écrasement de progs parce qu'on a mal calé le compteur cassette!

Citation:
Passer du Basic à l'Assembler aller-retour, ça ne me dérange plus depuis longtemps. C'est même devenu une deuxième nature. Eteindre la machine pour changer de programme est inhérent à ces machines de petite capacité. Ca fait partie du processus et je m'y conforme sans peine. Et je ne pense pas que ce soit beaucoup plus lent. Surtout maintenant que l'on peut travailler sur émulateur, on a déjà beaucoup gagné en rapidité.

Vive les emuls en effet! Et puis avec les compilo asm comme c6809 v0.7 (pub!), on peut même travailler 100% sur le PC sans même devoir passer par la cartouche ASM. :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Mix ASM/Basic
MessagePosté: 13 Déc 2009, 12:40 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Samuel Devulder a écrit:
Je crois qu'il y avait du Pascal et du Forth. Ca donnait quoi?

Pascal, connait pas. Quand au Forth, on aurait pu croire que l'instruction 'COMPILE" aurait compilé le programme, mais il n'en est malheureusement rien...

Samuel Devulder a écrit:
Est-ce que les IDE (et le langage) étaient sympa (édition facile, insertion de code n'importe où aisée, scroll rapide, recherche de procédure efficace) ?

1 MHz.

Samuel Devulder a écrit:
Est-ce que le code ASM tenait la route? Particulièrement: est-ce que le code ASM était banquable et pouvait tenir dans plus de 16ko avec appel croisé inter banques?

Faut voir pour le Pascal.

Samuel Devulder a écrit:
Prehisto a écrit:
Et la cassette ? Tu te souviens de la cassette ? :lol:

Oula oui.. et je te parle pas de l'écrasement de progs parce qu'on a mal calé le compteur cassette!

... sans parler des cruelles "I/O Error"....

Samuel Devulder a écrit:
Vive les emuls en effet! Et puis avec les compilo asm comme c6809 v0.7 (pub!), on peut même travailler 100% sur le PC sans même devoir passer par la cartouche ASM. :)

Oh. Tu l'utilises ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 14 Déc 2009, 13:51 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
Citation:
Rien de tangible, en ce qui me concerne. Je n'ai jamais eu un tel programme entre les mains. Mais j'ai entendu des choses...


Mais ... !

Non seulement il y avait un produit commercial à l'époque, qui s'appelle Speedy Wonder, mais il y a aussi le livre "L'interpréteur BASIC du TO7-TO7/70" dispo sur le site de Daniel qui explique comment faire un tel compilateur ...

Fool


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 14 Déc 2009, 13:58 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Fool-DupleX a écrit:
Non seulement il y avait un produit commercial à l'époque, qui s'appelle Speedy Wonder, mais il y a aussi le livre "L'interpréteur BASIC du TO7-TO7/70" dispo sur le site de Daniel qui explique comment faire un tel compilateur ...Fool

Ah, je savais bien que j'avais entendu quelque chose !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 14 Déc 2009, 15:33 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Fool-DupleX a écrit:
Non seulement il y avait un produit commercial à l'époque, qui s'appelle Speedy Wonder, (...)


Introuvable sur logicielsmoto, mais dispo ici: http://serveur87thomson.free.fr/dsk2/speedy_w.zip

Cool, Fool. Merci!

Oula par contre je constate que speedy wondeur prend des libertés avec la "sémantique" du basic. Le même code ne s'exécute pas pareil entre le vrai basic et ce qu'il en comprends:
Code:
Exemple: A = 0: A = A XOR 255+11*5: ? A
Vrai basic: 310
SpeedyWonder: 1330 :(

Autre: A = 65535: ? A
Vrai basic: 65535
SpeedyWonder: -1 :(

Par ailleurs les chaines sont limitées à 50 caractères, les vars sont prédéfinies (a->w ) entier 16birs, x->z tableaux de 99 entier 16bits. Aucun rééls rien. Dommage moi qui aurait voulu porter mon soft de planetarium que je trouvais trop lent.


Dernière édition par Samuel Devulder le 29 Déc 2009, 12:25, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 14 Déc 2009, 16:52 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
C'est pour cela que comme tu es ambitieux, tu vas te taper le bouquin dispo chez daniel et nous faire un petit compilo de derriere les fago ! :eek:

L'avantage du bouquin, c'est qu'il part du BASIC 1.0 et qu'il derive progressivement, chapitre apres chapitre, vers le compilateur. Mais il ne resoud pas tous les problemes, seulement certains. Au lecteur de s'attaquer au reste.

Fool


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 14 Déc 2009, 17:15 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Fool-DupleX a écrit:
C'est pour cela que comme tu es ambitieux, tu vas te taper le bouquin dispo chez daniel et nous faire un petit compilo de derriere les fago ! :eek:

Ambitieux.. sans doute, mais fainéant encore plus :lol: . Si tu savais le temps que je mets à trouver le meilleur algo de réduction de couleur pour thomson (a chaque fois que j'en trouve un bon pour mon corpus d'image, je trouve d'autres images où il n'est vraiment pas bon. Aussi j'ajoute les images au corpus et je comprends pourquoi ca marche mal et on peaufine). Mais bon en même temps je m'instruit sur un domaine assez riche et où l'expérimentation compte beaucoup. Vivement les vacances que je puisse progresser là dessus..
Citation:
L'avantage du bouquin, c'est qu'il part du BASIC 1.0 et qu'il derive progressivement, chapitre apres chapitre, vers le compilateur. Mais il ne resoud pas tous les problemes, seulement certains. Au lecteur de s'attaquer au reste.

Je me demande si je n'avais pas déjà lu le livre dans le passé. Il liste les points d'entrée du basic permettant d'ajouter des fonctions, de parser les arguments dans le source basic, etc?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 15 Déc 2009, 09:49 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
L'algorithme de réduction de couleur ultime existe, n'en avions-nous pas deja parle ?

http://rzbl04.biblio.etc.tu-bs.de:8080/docportal/servlets/MCRFileNodeServlet/DocPortal_derivate_00001593/Document.pdf;jsessionid=D6642635CC62AC851A27BC6B15FDDD38

Evidemment, il y a un defaut dans notre situation, c'est qu'il n'est pas capable de tenir compte des contraintes de proximite de certains modes graphiques du Thomson. Mais pour le reste, les resultats sont bluffants y compris avec peu de couleurs et une basse resolution. J'avais travaille sur cet algo il y a quelques annees en arriere, lorsque je bossais dans le domaine.

Fool


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 15 Déc 2009, 11:22 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Fool-DupleX a écrit:
L'algorithme de réduction de couleur ultime existe, n'en avions-nous pas deja parle ?

http://rzbl04.biblio.etc.tu-bs.de:8080/docportal/servlets/MCRFileNodeServlet/DocPortal_derivate_00001593/Document.pdf;jsessionid=D6642635CC62AC851A27BC6B15FDDD38

Evidemment, il y a un defaut dans notre situation, c'est qu'il n'est pas capable de tenir compte des contraintes de proximite de certains modes graphiques du Thomson. Mais pour le reste, les resultats sont bluffants y compris avec peu de couleurs et une basse resolution. J'avais travaille sur cet algo il y a quelques annees en arriere, lorsque je bossais dans le domaine.

Fool



En fait il y a scolorq (spatial color quantization) qui pourrait tenir compte des contraintes spatiales type thomson. Au niveau dithering sur thomson j'ai trouve des algos qui marchent vraiment bien malgrès les contraites 8x1. Par contre ce qu'il me faut à présent c'est un algo de sélection des 16bonnes couleurs du thomson avec sa palette de couleur pas du tout linéaire.

J'ai vraiment des résultats sympas avec la réduction de couleur actuelle.
Image Image Image Image Image Image Image Image Image Image Image Image Image Image Image

etc etc.. Mais c'est pas encore parfait. (mon but est de faire du photo realisme sur thomson en 16couls.. le fou!)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 15 Déc 2009, 11:53 
Hors ligne

Inscription: 13 Mai 2005, 19:44
Messages: 182
Localisation: limoges
Samuel Devulder a écrit:
Fool-DupleX a écrit:
Non seulement il y avait un produit commercial à l'époque, qui s'appelle Speedy Wonder, (...)


Introuvable sur logicielsmoto, mais dispo ici: http://serveur87thomson.free.fr/dsk2/speedy_w.zip

Cool, Fool. Merci!

Oula par contre je constate que speedy wondeur prend des libertés avec la "samntique" du basic. Le m^meme code ne s'execute pas pareil entre le vrai basic et ce qu'il en comprends:
Exemple: A = 0: A = A XOR 255+11*5: ? A
Vrai basic: 310
SpeedyWonder: 1330 :(

Autre: A = 65535: ? A
Vrai basic: 65535
SpeedyWonder: -1 :(

Par ailleurs les chaines sont limitées à 50 caractères, les vars sont prédéfinies (a->w ) entier 16birs, x->z tableaux de 99 entier 16bits. Aucun rééls rien. Dommage moi qui aurait voulu porter mon soft de planetarium que je trouvais trop lent.


Bonjour,

C'est un logiciel que j'ai très souvent utilisé, mais ci mes souvenirs son exacts il me semble qu'on était limité dans la compilation.

_________________
Cordialement
Louis


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: 15 Déc 2009, 12:59 
Hors ligne

Inscription: 06 Juin 2004, 08:23
Messages: 464
Samuel Devulder a écrit:
En fait il y a scolorq (spatial color quantization) qui pourrait tenir compte des contraintes spatiales type thomson. Au niveau dithering sur thomson j'ai trouve des algos qui marchent vraiment bien malgrès les contraites 8x1. Par contre ce qu'il me faut à présent c'est un algo de sélection des 16bonnes couleurs du thomson avec sa palette de couleur pas du tout linéaire.


Tes images sont tres impressionnantes !

L'algo de Buhmann est un scolorq avec calcul adaptatif de la palette de couleur. Par palette pas du tout lineaire tu fais allusion aux 16 couleurs de base type MO5 ou a la palette de 4096 couleurs du TO8 ? Dans le deuxième cas, c'est un problème de gamma qui a deja ete discute aussi il me semble (mais sur silicium) : la datasheet du circuit palette donne la formule theorique de calcul. En rajoutant un modele de la palette thomson sur Buhmann, ca devrait en principe etre possible de resoudre ton probleme.

Ou peut-etre que j'ai loupe un element.

En tout cas chapeau pour tes resultats c'est prometteur.

Fool


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 19 messages ]  Aller à la page 1, 2  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 34 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com