Special !



Mobile version of
the aldweb Site

m.aldweb.com


Neither French, nor English?

Try one of these flags then:
[de] [es] [it] [pt]
aldweb

Close I. aldweb

Close II. PC Freeware

Close III. Palm Freeware

Close IV. Palm Shareware

Close V. iziBasic Palm

Close VI. Palm Knowledge

Close VII. Pocket Computer

Close VIII. miniPortail

Geolocation
Search




Weather / Spam / www

Lyon Weather


aldweb against spam


Newsletter
To receive news about this website, consider subscribing to our Newsletter.
Subscribe
Unsubscribe
293 Subscribers
Family's web sites

Webmaster - Infos
Poll
What do you think of the new design of the aldweb Site?
 
Great !
Beautiful
Average
So ugly...
Results
Visits

   visitors

   visitors online

Friends News
Pagerank

Google Ads
forum.gifForum - Topic #12

Forum - Forum
-


active  Topic # 12  Discussion générale PC-E500 (Bascom, Forth...)

18/09/2002 @ 13:22
by aldweb

Anonymous



Vous trouverez dans ce thread du forum une copie d'un long échange d'e-mails entre Claude et Sébastien.
C'est sur la bonne idée de Sébastien que cette discussion d'intérêt général sur le PC-E500 a été mise ici à la disposition de tous.

For you English readers, you will find in this forum's thread a copy of a rich exchange of e-mails between Claude and Sebastien. Sorry, they are both French, so this topic will be in this language (please use an online translator for reading it).

Sebastien is the one who gave the good idea of putting this discussion of general interest on the PC-E500, so that everybody interested can give a look to it.
Write to aldweb   Post an answer  Top

[]   

StartPrevious [ 1 2 3 4 5 ] NextEnd
Answer n 11
--------
18/09/2002 @ 13:33
by Sébastien

Anonymous

visitor
> Pourquoi as tu acheté autant de matos PC E500(s) ?

Parce que je les "upgrade" : J'ai "overclocké" deux machines à 4.8 MHz
(au lieu de 2.304 MHz). Or j'en ai déjà mise une hors d'usage : C'est
donc pour avoir de la réserve en cas de catastrophe ! J'avais aussi en
projet de rajouter une fonction d'horloge, chose que je n'ai jamais
faite bien que j'aie récupéré tous les composants nécessaires (par
courrier du Japon !).

> A quoi ressemblent leurs cartes de 256 Ko ?.la mienne est artisanale et la pile est soudée
sur le circuit :(

Tu peux aller voir sur le site : Il y a des photos. Ce ne sont pas des
copies de l'originale mais je les trouve pas mal (en tout cas, je n'ai
eu aucun problème d'utilisation). Elles sont protégeables en écriture
par un petit "switch", ce qui est bien pratique en cas de crash (d'un
programme Forth ou en langage machine...).


> Je pense que je ne pourrai me faire une idée réelle de forth que lorsque j'aurai fait mes
premiers benchs. Au fait, peut être en as tu déjà fait ? Quelle est la proportion
d'interprété, grosso-modo, dans du code FORTH ?

La nuance entre interprété et compilé en Forth est subtile : Le modèle
utilisé par mon implantation est le "code chaîné direct" (DTC, Direct
Threaded Code). Toute définition Forth commence par une séquence en
langage machine (elles sont toutes appelées par un CALL court). Cette
séquence se réduit à un simple saut vers une routine d'interprétation
d'adresses dans les cas de mots de haut niveau. J'ai codé toutes les
routines critiques du point de vue temps d'exécution en assembleur, les
autres étant en Forth. Par exemple, SM/REM (qui fait la division
symétrique avec reste en double précision) est codée en Forth car le
temps passé dans cette définition l'est en réalité dans le
sous-programme de division non signée UM/MOD (qui lui est en langage
machine). J'avais fait des essais "tout langage machine" : Je ne gagnais
que 10% de temps au risque d'introduire des bogues et d'augmenter la
quantité de code assembleur non trivial (de plus les définitions en
Forth sont souvent moins gourmandes en espace mémoire que le langage
machine qui fait la même chose).

La proportion d'interprété dans le code Forth atteint 50% à peu près
(ce qui le rend 6 à 7 fois plus lent que le langage machine au pire car
il y a des primitives qui sont appelées pour rien). Cela reste toutefois
impressionnant à côté de BASIC :
FOR i = 1 to 10000:NEXT ' Sans le I ça va deux fois plus vite !
prend 14 secondes sur un PC-E500 (à confirmer mais je ne crois pas me
tromper de beaucoup !)
10000 0 DO LOOP
prend 0.5 secondes en Forth ! Et c'est encore pire lorsque l'on fait de
l'arithmétique entière (16 ou 32 bits en Forth) vu que BASIC est obligé
d'utiliser les flottants...

Concernant les primitives :
Il est facile de rajouter une primitive à Forth : on crée une nouvelle
définition et on la "remplit" avec du code hexadécimal par exemple (ou
assembleur si on a eu le courage d'en écrire un). Mon Forth inclut le
mot (CODE;) qui marque le début d'une section en langage machine et que
l'on peut insérer dans n'importe quelle définition. (CODE;) est compilé
automatiquement par le mot DOES> (en général, les mots entre parenthèses
ne sont pas destinés à l'utilisateur normal mais plutôt au "hacker").
DOES> permet de créer des définitions dont le comportement n'est pas
standard en spécifiant celui-ci en Forth de haut niveau (pratique pour
les extensions objet par exemple). Il serait peut-être intéressant
d'ajouter le mot CODE; qui est l'équivalent de DOES> mais qui attend du
code machine et non pas du Forth de haut niveau (on n'a jamais fini
d'étendre un Forth !).

> des questions, tjrs des questions....

Ne t'inquiète pas : J'ai aussi beaucoup de réponses !
Write to Sébastien   Post an answer  Top
Answer n 12
--------
18/09/2002 @ 13:34
by Claude

Anonymous

visitor
Tu m'as parlé de memoire fusionnée ? je ne savais pas que c'était une option envisageable.
comment cela se configure-t-il ?
32+256 ca te parait honnete ?


FORTH :
Je suis encore loin du compte.
J'imagine que sur les differentes implémentations possibles (suggérées) on joue sur le nombre
d'indirections, le nombre de commandes adressables, la vitesse du process global et la taille
de code?
Est ce que DTC est l'implementation naturelle pour les petits systèmes ?
Y a t il un endroit ou sont résumés implementations =>requirements & possibilités +avantages
vs defauts ?
Write to Claude   Post an answer  Top
Answer n 13
--------
18/09/2002 @ 13:35
by Sébastien

Anonymous

visitor
> Tu m'as parlé de memoire fusionnée ? je ne savais pas que c'était une option envisageable.
> comment cela se configure-t-il ?
> 32+256 ca te parait honnete ?

C'est faisable depuis BASIC :
MEM$="B" ' B comme "Both"

> FORTH :
> Je suis encore loin du compte.
> J'imagine que sur les differentes implémentations possibles (suggérées) on joue sur le
nombre d'indirections, le nombre de commandes adressables, la vitesse du process global et la
taille de code?

Oui, cela dit sur les petits systèmes (comme le PC-E500/S) on
s'inquiète surtout de la taille du code du noyau : Un compilateur
optimisant produira généralement un code plus compact qu'un compilateur
de code chaîné naïf mais tiendra difficilement dans 20 ko !
Il existe plusieurs techniques de compilation mises en oeuvre en Forth
(et dans bien d'autres langages) :
- code natif ;
- code octet (repris par Java) ;
- code chaîné indirect ("bytecode" d'Objective Caml, tous les Forths de
la norme "Forth 83") ;
- code chaîné direct ;
- ...
Voici quelques liens intéressants qui discutent des avantages et des
inconvénients des différentes techniques :
http://www.complang.tuwien.ac.at/forth/threaded-code.html
http://www.zetetics.com/bj/papers/

> Est ce que DTC est l'implementation naturelle pour les petits systèmes ?

Elle dépend du processeur. En général le DTC est plus rapide que l'ITC
car il y a une indirection de moins pour interpréter les mots compilés.
De plus, il n'y a pas de différence entre une définition compilée en
code chaîné et une primitive au sens où les deux commencent par du code
machine.
Sur le PC-E500/S, le DTC fait perdre un octet par définition compilée
en code chaîné (le 'jp', première instruction) mais en fait gagner deux
par primitive (pas d'indirection). Or il y a à peu près autant de
primitives que d'autres définitions dans mon Forth...
L'ITC pourrait avoir un avantage sur le DTC : Il permettrait de
contruire un Forth plus robuste (c'est-à-dire dont l'interpréteur a
moins de chances de s'emballer en cas de code erroné, en contrôlant la
validité des adresses figurant en tête de définitions..).

> Y a t il un endroit ou sont résumés implementations =>requirements & possibilités
+avantages vs defauts ?

Cf. plus haut !

Un autre projet intéressant en Forth serait l'écriture d'un compilateur
(légèrement) optimisant qui enlèverait toutes les instructions inutiles
comme DUP, SWAP, etc. ainsi que les CALL de sous-programmes... Mais je
n'ai vraiment pas le temps de m'y atteler pour l'instant.
Write to Sébastien   Post an answer  Top
Answer n 14
--------
18/09/2002 @ 13:35
by Claude

Anonymous

visitor
Te semble t-il normal que je ne puisse pas charger ton S1.RAM contenant ton Forth sur l'emul
NT/2000 ?
A-t-il besoin d'une ROM ou d'une config specifique pour tourner ?

As tu d'autres ordinateurs de poche ?
Write to Claude   Post an answer  Top
Answer n 15
--------
18/09/2002 @ 13:36
by Sébastien

Anonymous

visitor
> Te semble t-il normal que je ne puisse pas charger ton S1.RAM contenant ton Forth sur
l'emul NT/2000 ?

Je n'en sais rien. Je n'ai jamais testé l'émulateur NT/2000 avec mes
fichiers S1.RAM. Je ne vois pas pourquoi ça ne marcherait pas vu que
S1.RAM ne contient qu'un "snapshot" des 4 segments supérieurs de la RAM
du PC-E500/S... Si j'ai le temps demain je récupérerai un émulateur
NT/2000 pour voir.

> A-t-il besoin d'une ROM ou d'une config specifique pour tourner ?

Normalement non.

> As tu d'autres ordinateurs de poche ?

Tandy PC-6 (acheté en classe de première, clone "relooké" du FX-790P
Casio), 2 Sharp PC-E500, 2 Sharp PC-E500S, 1 Sharp PC-1403H (peu servi,
beaucoup de documents pourtant), 1 Casio FX-850P (j'en ai vite fait le
tour, pas très intéressant...).
Write to Sébastien   Post an answer  Top
Answer n 16
--------
18/09/2002 @ 13:39
by aldweb

Anonymous

visitor
Sébastien,

Je me permets de te rappeler que tu possèdes aussi un PC-1360... que je t'avais échangé contre un PC-E500 le jour où nous nous sommes vus pour de vrai dans un bistrot à Paris après avoir échangé de longs e-mails enflammés sur le thème des Pocket Computers, notre passion commune!

Et, comme pour Claude, j'avais trouvé ton adresse e-mail dans un fichier ZIP contenant BASCOM :-)
Write to aldweb   Post an answer  Top
Answer n 17
--------
18/09/2002 @ 13:41
by Claude

Anonymous

visitor
je pense faire de grandes choses (entre autres)... :)
Write to Claude   Post an answer  Top
Answer n 18
--------
18/09/2002 @ 13:41
by Sébastien

Anonymous

visitor
Ah ? Je suis curieux : Tu peux m'en dire plus ?
Write to Sébastien   Post an answer  Top
Answer n 19
--------
18/09/2002 @ 13:47
by Claude

Anonymous

visitor
Terminer mon installation d'arrosage automatique du puits jusqu'au goutte à goutte.
:)

Et me lancer dans le PC-E Forth pardi!.
mais vu ton niveau, les "grandes choses" risquent d'être toutes relatives.
Write to Claude   Post an answer  Top
Answer n 20
--------
18/09/2002 @ 13:51
by Sébastien

Anonymous

visitor
Bonne idée ! Je serai à ta disposition pour les documents. En fichier
attaché je te joins le brouillon de la norme ANS 94 : Tu y trouveras la
définition des mots standards ainsi que des explications intéressantes
sur le langage et sa sémantique en annexe. Je suis parti de ce document
pour écrire mon Forth (c'est un joli nom, PC-E Forth !).
Pour rendre l'environnement franchement intéressant, il reste deux ou
trois choses à faire.
Je m'étais fixé, par ordre d'importance :
- Ajouter les nombres en virgule flottante (pas trop dur si fait
naïvement, mais ce serait bien si c'était performant !) ;
- Fonctions de modification/affichage des touches programmables de
fonction (facile : c'est une histoire d'allocation, le reste est géré
par STDO:SCRN: et mon éditeur Forth tient compte de la configuration de
l'écran) ;
- Un débogueur (en Forth) ;
- La possibilité d'accéder aux variables de BASIC et de lancer des
programmes BASIC (pas trop dur non plus) ;
- Des fonctions graphiques performantes (long, dur, #&#x$ et j'en
passe... Mais les algos sont connus et on dispose des sources du moteur
graphique de VOGUE) ;
- Diverses fonctions système pour gérer les "unités" (niveau IOCS, FCS
c'est OK).
S'il y a des points qui t'intéressent, je peux te donner des
informations plus précises.

> mais vu ton niveau, les "grandes choses" risquent d'être toutes relatives.

C'est un expert de code Java embarqué qui me dit ça !

A+,

Seb.

P-S : Je ne vais pas pouvoir essayer l'émulateur sur ma machine car
j'ai un Windows NT SP3... Je sais c'est nul comme configuration mais
j'en avais marre de consommer de la RAM sans raison. Il faut que je
trouve une autre machine, demain sans doute.
Write to Sébastien   Post an answer  Top
StartPrevious [ 1 2 3 4 5 ] NextEnd
active topic active   closed topic closed   Important! Important!   New New message   -   Correct Correct message   Close Close topic   Make sticky Make sticky
[]



 
^ Top ^