Derniers sujets
» A venir: nouvelle version TAP2WAV
Programmation BASIC - Page 3 EmptyHier à 15:36 par Symoon

» OSDK & gnu/Linux...
Programmation BASIC - Page 3 EmptyVen 20 Sep - 2:39 par Symoon

» Oric High Score Challenge 2019 : c'est parti
Programmation BASIC - Page 3 EmptyMer 18 Sep - 18:57 par iss

» afficher un sprite au pixel près, quelle méthode optimale ?
Programmation BASIC - Page 3 EmptyMer 18 Sep - 18:35 par Dbug

» Twilighte card, 6502 et joysticks
Programmation BASIC - Page 3 EmptyMer 18 Sep - 14:11 par Jede

» rs
Programmation BASIC - Page 3 EmptyMar 17 Sep - 10:55 par kenneth

» TranspOrictable
Programmation BASIC - Page 3 EmptyDim 15 Sep - 20:55 par Voyageur

» CEO-MAG 351
Programmation BASIC - Page 3 EmptySam 14 Sep - 19:30 par didierv

» Apprendre l'Assembleur ORIC
Programmation BASIC - Page 3 EmptySam 14 Sep - 7:42 par ]0[v]

» Jeux Non Oric - retrogaming
Programmation BASIC - Page 3 EmptyVen 13 Sep - 18:05 par Dbug

» Emulation de disquette avec un GOTEK (firmware HxC, clé USB) sur un Jasmin 2 pour Oric Atmos
Programmation BASIC - Page 3 EmptyJeu 12 Sep - 17:25 par Dbug

» Mystery Towers
Programmation BASIC - Page 3 EmptyMar 10 Sep - 5:43 par Dom50

» Une websérie sur le jeu video made in France
Programmation BASIC - Page 3 EmptyMar 10 Sep - 5:17 par didierv

» Depannages post visu
Programmation BASIC - Page 3 EmptyLun 9 Sep - 18:29 par retroric

» basic & lib ASM___[RESOLU]
Programmation BASIC - Page 3 EmptyLun 9 Sep - 13:23 par ]0[v]

Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév - 13:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 193 membres enregistrés
L'utilisateur enregistré le plus récent est Oric Man

Nos membres ont posté un total de 7819 messages dans 676 sujets
Portail ORIC




Programmation BASIC

Page 3 sur 3 Précédent  1, 2, 3

Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Hialmar le Ven 25 Avr - 18:32

Ah ok, ça parait logique effectivement.

Après le problème par rapport aux adresses mémoires c'est qu'on a des tableaux de chaines de caractères et là c'est le bazar. Dans le tableau tu as les adresses des chaines qui elles sont stockées dans une autre zone.
Hialmar
Hialmar
Admin

Messages : 826
Date d'inscription : 03/03/2014
Age : 49
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par assinie le Ven 25 Avr - 20:01

Bonsoir,

Tu peux connaitre facilement l'adresse du descripteur de la variable en faisant un DEEK(#B6) juste après avoir utiliser la variable.
#B6-B7 contient l'adresse de la dernière variable utilisée
Exemple
Code:

10 DIM A(100):PRINT HEX$(DEEK(#B6))
20 A=10:PRINT HEX$(DEEK(#B6))
30 B$="TEST":PRINT HEX$(DEEK(#B6))
Le problème est qu'il faut récupérer le contenu de #B6-B7 et le stocker en mémoire et pas dans une variable, sinon c'est l'adresse de cette dernière que tu récupères à chaque fois.
Code:

10 A$="TEST":DOKE 0,DEEK(#B6)
20 PRINT "Adresse du descripteur de A$:";HEX$(DEEK(0))

Il est également possible de faire l'équivalent d'une commande VARPTR présente dans certains BASIC:
Code:

5 REM Version Oric-1
10 DATA #20,#D9,#CF,#20,#FC,#D0,#85,#00,#84,#01,#60
20 DATA -1
30 AD=#400
40 READ V:IF V<>-1 THEN POKE AD,V:AD=AD+1:GOTO 40
50 CALL #400,V
60 PRINT "Adresse du descripteur de V:";HEX$(DEEK(0))

Pour un ATMOS, il faut remplacer la ligne 10 par
Code:

10 DATA #20,#65,#D0,#20,#88,#D1,#85,#00,#84,#01,#60

Après tout dépend du type de données que tu stockes dans tes tableaux.
Pour des chaines, par exemple, l'adresse réelle de la chaine sera DEEK(DEEK(0)+1)
Pour des entiers, la valeur est de la variable est directement obtenue par DEEK(DEEK(0)+1)
Pour des réels, c'est un peu plus compliqué.
assinie
assinie

Messages : 254
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Hialmar le Ven 25 Avr - 20:05

Merci pour l'info.

Si la sauvegarde est trop lente avec la boucle de put je regarderai ça.

J'ai aussi regardé le code machine de la rom pour les opérations STORE et RECALL mais c'est un peu chaud car ça utilise des flags utilisés un peu partout de ce que j'ai pu comprendre.
Hialmar
Hialmar
Admin

Messages : 826
Date d'inscription : 03/03/2014
Age : 49
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par assinie le Ven 25 Avr - 20:11

Je ne connais pas très bien le Sedoric, mais il n'y a pas de commande de sauvegarde d'un tableau comme sous FT-DOS? (!MSAVE et !MLOAD)
assinie
assinie

Messages : 254
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Hialmar le Ven 25 Avr - 20:29

J'en ai pas trouvé dans la doc mais je l'ai pas lue du début jusqu'à la fin donc j'ai peut-être loupé ça.
Hialmar
Hialmar
Admin

Messages : 826
Date d'inscription : 03/03/2014
Age : 49
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par assinie le Ven 25 Avr - 20:37

Ok, sinon, au besoin, j'ai désassemblé la totalité du FT-Dos, je pourrais regarder les sources des commandes MLOAD et MSAVE et voir si on peut les adapter au Sedoric.
assinie
assinie

Messages : 254
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Hialmar le Ven 25 Avr - 20:39

Ah oui ça c'est une super idée Smile
Hialmar
Hialmar
Admin

Messages : 826
Date d'inscription : 03/03/2014
Age : 49
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par assinie le Ven 25 Avr - 20:43

Tu as besoin de sauvegarder quels types de tableaux?
assinie
assinie

Messages : 254
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Hialmar le Sam 26 Avr - 6:42

On a des tableaux contenant des valeurs numériques et des tableaux contenant des chaînes de caractères (ce sont eux qui sont les plus compliqués à sauver mais il n'y en a pas des tonnes donc je pense qu'avec la sauvegarde séquentielle ça devrait aller très bien).
Hialmar
Hialmar
Admin

Messages : 826
Date d'inscription : 03/03/2014
Age : 49
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par maximus le Dim 27 Avr - 5:51

Embarassed 
maximus
maximus

Messages : 1259
Date d'inscription : 02/12/2012
Age : 58
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Programmation Basic

Message par Zodiac le Dim 27 Avr - 22:16

Bonsoir,

Pour revenir sur les variables et la place occupée par ces dernières, je viens de relire un passage du Manuel de référence Tome1  d'André Chenière.
Il précise que si toutefois les variables entières indicées occupent bien moins de place que les réelles, il n'en est pas de même pour les variables entières simples.
Elles occupent 7 octets, comme les réelles 2 octets d'identification, 2 octets pour la valeur et les 3 derniers octets toujours à zéro , ce qui fait bien nos 7 octets.
De plus, l'éxecution du programme s'en trouve ralenti du fait, que l'interpréteur doit transformer ces dernières en virgule flottante avant de les utiliser.
Pour nous qui cherchons toujours plus de vitesse et d'économie de place en basic, j'avoue que j'ai été un peu surpris; je pensais que les variables entières indicées ou non ne consommaient que 2 octets pour leurs valeurs. Bien que je prenne en référence  les dires de Mr Chenière, j'ai été fouiller dans la mémoire à l'adresse des variables simples et c'est bien vrai, en plus de ça il faut ajouter un octet consommé en plus dans le code avec le signe %.
A+
Zodiac
Zodiac

Messages : 92
Date d'inscription : 27/01/2014
Localisation : Yvelines

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Hialmar le Lun 28 Avr - 5:40

Oui j'ai vu ça dans le bouquin de Geoff Phillips.

Maximus n'utilise quasiment que des tableaux d'entiers donc pas de pb pour Tyrann 3 mais c'est vrai que ça m'a bien erroné moi aussi ce truc.

Par contre je pense pas qu'il passe en virgule flottante pour les calculs et donc c'est le seul intérêt des variables entières scalaires.
Hialmar
Hialmar
Admin

Messages : 826
Date d'inscription : 03/03/2014
Age : 49
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Programmation Basic

Message par Zodiac le Lun 28 Avr - 12:40

Bonjour à tous,

@Hialmar: Comme toi, cette affaire m'a intrigué et suite à ta réponse, j'ai tout de même voulu vérifier la véracité des dires de Mr Chenière. Pour mémoire, ce dernier précisait dans son ouvrage, que l'interpréteur Basic de l'Oric transforme en virgule flottante les variables entières non indicées avant de les utiliser. Après verification sur une boucle avec 2000 itérations effectuant le cumul de trois variables du style A=A+1, B=B+1, C=C+1 et respectivement A%=A%+1, B%=B%+1, C%=C%+1; sauf erreur de ma part, l'ecart obtenu est de 5 secondes en faveur des variables réelles.

Bonne journée,
A+
Zodiac
Zodiac

Messages : 92
Date d'inscription : 27/01/2014
Localisation : Yvelines

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Hialmar le Lun 28 Avr - 15:29

:( bon ben elles sont complètements inutiles alors.
Hialmar
Hialmar
Admin

Messages : 826
Date d'inscription : 03/03/2014
Age : 49
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par assinie le Lun 28 Avr - 18:55

Tous les calculs sont effectivement faits en virgule flottante, ce qui fait qu'une instruction A%=B%+C% nécessite la conversion des 2 variables B% et C% en virgule flottante pour calculer l'addition puis une conversion en entier pour l'affectation.
Ce qui n'est pas le cas pour A=B+C puisque déjà dans le bon format.

En revanche, les tableaux d'entiers prennent moins de place que le même tableau de réels, contrairement aux variables simples qui utilisent toutes au moins 7 octets.

Dans le même ordre d'idée, on perd également de la place avec les variables "chaine de caractères" (3 octets par chaine!)

Dans tous les cas, les tableaux sont mieux gérés, en terme d'espace occupé, que les variables simples.
Après tout dépend de l'utilisation des variables et sin on cherche à optimiser la vitesse d'exécution ou l'espace mémoire utilisé.

assinie
assinie

Messages : 254
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Hialmar le Ven 2 Mai - 7:24

J'ai relu le passage du bouquin de Geoff et, bien sur, tu as tout à fait raison.

Le seul avantage à utiliser des variables non tableau entières est si on a besoin de faire des INT pour avoir la partie entière puisque c'est directement ce qui est stocké.
Bref c'est pas très intéressant.

Pour les tableaux évidemment il n'y a pas photo, sur un gros tableau on peut diviser l'espace de stockage par plus de deux (5 octet par réel contre 2 par entier).
Hialmar
Hialmar
Admin

Messages : 826
Date d'inscription : 03/03/2014
Age : 49
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Atlantis le Ven 2 Mai - 15:20

Oui c'est effectivement une particularité de notre Oric.
Contre toute attente (et en totale contradiction avec la majorité de ses contemporains), il est préférable d'utiliser les variables en notation réelles.
Alors que sur Amstrad par contre, la "logique" est respectée et il est préférable d'utiliser (a%=a%+1 en lieu et place de a=a+1)
Mais on l'aime comme il est !!  geek 
Atlantis
Atlantis

Messages : 104
Date d'inscription : 17/01/2013
Age : 50
Localisation : Seine et Marne

http://www.safargames.fr

Revenir en haut Aller en bas

Programmation BASIC - Page 3 Empty Re: Programmation BASIC

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 3 sur 3 Précédent  1, 2, 3

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum