Derniers sujets
» Visu Hivernale 2020
Nombres négatifs  16 bits via DEEK EmptyHier à 12:03 par didierv

» Bocco's adventures - nouveau jeu pour Oric
Nombres négatifs  16 bits via DEEK EmptyVen 24 Jan 2020 - 10:09 par Dom50

» Fifteen Puzzle - [raxiss]
Nombres négatifs  16 bits via DEEK EmptyVen 24 Jan 2020 - 9:50 par jbperin

» Bonnes fêtes
Nombres négatifs  16 bits via DEEK EmptyDim 19 Jan 2020 - 19:36 par retroric

» rs
Nombres négatifs  16 bits via DEEK EmptyDim 19 Jan 2020 - 10:18 par Symoon

» Ca se frite sur eBay ! :-)
Nombres négatifs  16 bits via DEEK EmptyMer 15 Jan 2020 - 10:36 par Oric1-Atmos

» Cartouche telestrat
Nombres négatifs  16 bits via DEEK EmptySam 11 Jan 2020 - 22:59 par 6502man

» Contrôleur microdisc (mini)
Nombres négatifs  16 bits via DEEK EmptyMer 8 Jan 2020 - 12:11 par Oric1-Atmos

» Abonnement
Nombres négatifs  16 bits via DEEK EmptyMar 7 Jan 2020 - 3:50 par didierv

» ROM 1.22?
Nombres négatifs  16 bits via DEEK EmptyLun 6 Jan 2020 - 19:33 par froggy

» Oricutron - Problème touche clavier
Nombres négatifs  16 bits via DEEK EmptyDim 5 Jan 2020 - 9:16 par jbperin

» Telestrat a Vendre
Nombres négatifs  16 bits via DEEK EmptyVen 3 Jan 2020 - 22:30 par didierv

» Nouveau site ceo.oric.org
Nombres négatifs  16 bits via DEEK EmptyMar 31 Déc 2019 - 0:17 par didierv

» jeu Rain Panic
Nombres négatifs  16 bits via DEEK EmptyLun 30 Déc 2019 - 22:27 par jbperin

» Branchement alimentation péritel [Résolu]
Nombres négatifs  16 bits via DEEK EmptyJeu 26 Déc 2019 - 19:41 par jbperin

Qui est en ligne ?
Il y a en tout 4 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 4 Invités

Aucun

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

Récupérer mon mot de passe

Statistiques
Nous avons 205 membres enregistrés
L'utilisateur enregistré le plus récent est TOOR

Nos membres ont posté un total de 8479 messages dans 735 sujets
Portail ORIC




Nombres négatifs 16 bits via DEEK

Aller en bas

Nombres négatifs  16 bits via DEEK Empty Nombres négatifs 16 bits via DEEK

Message par jbperin le Jeu 7 Nov 2019 - 16:42

Bonjour à tous,

Je rencontre un sérieux problème avec l'usage des nombres négatifs en BASIC.

Je veux pouvoir charger des entiers signés 16 bits et les manipuler dans des opérations arithmétique.
Mais je ne parviens pas à expliquer à DEEK que ce sont des nombres signés.

Voici le programme qui me permet de mettre en évidence le point sur lequel je bloque.
Ce programme charge les données 3, -2 et 2 fournies par DATA dans une plage mémoire (à #800) puis va les relire avec des DEEK.

Cela marche très bien pour les nombres positifs 3 et 2
Mais cela ne marche pas pour le nombre négatif -2

Code:
10     LET ADRBASE = # 800
20     ' Je stocke mes donnees en memoire
30     FOR N=0TO5
40     : READ DTA: POKE ADRBASE+N,DTA
50     NEXT N
60     ' Je relis mes donnees depuis la memoire
70     LET OFFSET = 0
80     V1 = DEEK (ADRBASE + OFFSET): OFFSET = OFFSET + 2
90     V2 = DEEK (ADRBASE + OFFSET): OFFSET = OFFSET + 2
100     V3 = DEEK (ADRBASE + OFFSET): OFFSET = OFFSET + 2
110     PRINT "V1 = ";V1;", V2 = ";V2;", V3 = ";V3
120     ' Mes donnees
130     DATA 3, 0, #FE, #FF, 2, 0
Ce programme m'affiche:
 V1 =  3 , V2 =  65534 , V3 =  2
Alors que moi je voudrais qu'il affiche:
 V1 =  3 , V2 =  -2 , V3 =  2
 
Si je remplace la ligne 130 par

130     DATA 3, 0, -2, 0, 2, 0

Je tombe sur le message d'erreur:
?ILLEGAL QUANTITY ERROR IN  40  Shocked

Comment puis-je faire pour avoir
V1 =  3 , V2 =  -2 , V3 =  2
 
Merci d'avance à ceux qui pourront me venir en aide ..
jbperin
jbperin

Messages : 94
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Nombres négatifs  16 bits via DEEK Empty Re: Nombres négatifs 16 bits via DEEK

Message par kenneth le Jeu 7 Nov 2019 - 18:00

Si on stocke des valeurs en mémoire avec des variables Basic, on peut utiliser des nombres avec décimales, de grand format et négatifs, si l'on souhaite stocker "sois-même" des valeurs en mémoire avec Doke, on se retrouve avec des outils réduits: nombres positifs, entiers, avec une valeur maximum de 65535. La signature est choisie par le programmeur: on peut décider de la placer sur le bit 7 si on se contente de nombres sur un octet ou le bit 15 pour un nombre en 2 octets. Il faudra faire un calcul pour retrouver la valeur souhaitee.
kenneth
kenneth
Modérateur

Messages : 782
Date d'inscription : 13/01/2013
Age : 52
Localisation : 972

Revenir en haut Aller en bas

Nombres négatifs  16 bits via DEEK Empty Re: Nombres négatifs 16 bits via DEEK

Message par jbperin le Jeu 7 Nov 2019 - 20:24

OK je comprends .. merci Very Happy

Je te remercie pour cette explication.

Je tente d'abuser de ta gentillesse pour te soumettre deux questions concernant cette approche.
En fait à terme j'envisage de traiter ces données en assembleur.
Je les charge de cette manière pour maîtriser (et surtout) connaître leurs adresses.
Si je définis ces données en BASIC comment puis-je connaitre leurs adresses ?
Est-ce que je peux être sur que ce sera des 16 bits signés ?

jbperin
jbperin

Messages : 94
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Nombres négatifs  16 bits via DEEK Empty Re: Nombres négatifs 16 bits via DEEK

Message par jbperin le Jeu 7 Nov 2019 - 21:22

kenneth a écrit:La signature est choisie par le programmeur:.

Oui je réalise que j'ai déjà un bout de code qui manipule une donnée BASIC en Assembleur .. et j'ai une piste pour connaitre l'adresse d'une variable BASIC dans le bouquin "les cléfs de l'Oric"

Merci pour tout ;-)
jbperin
jbperin

Messages : 94
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Nombres négatifs  16 bits via DEEK Empty Re: Nombres négatifs 16 bits via DEEK

Message par goyo le Ven 8 Nov 2019 - 18:00

jbperin a écrit:Bonjour à tous,

Je rencontre un sérieux problème avec l'usage des nombres négatifs en BASIC.

Je veux pouvoir charger des entiers signés 16 bits et les manipuler dans des opérations arithmétique.
Mais je ne parviens pas à expliquer à DEEK que ce sont des nombres signés.

Voici le programme qui me permet de mettre en évidence le point sur lequel je bloque.
Ce programme charge les données 3, -2 et 2 fournies par DATA dans une plage mémoire (à #800) puis va les relire avec des DEEK.

Cela marche très bien pour les nombres positifs 3 et 2
Mais cela ne marche pas pour le nombre négatif -2

Code:
10     LET ADRBASE = # 800
20     ' Je stocke mes donnees en memoire
30     FOR N=0TO5
40     : READ DTA: POKE ADRBASE+N,DTA
50     NEXT N
60     ' Je relis mes donnees depuis la memoire
70     LET OFFSET = 0
80     V1 = DEEK (ADRBASE + OFFSET): OFFSET = OFFSET + 2
90     V2 = DEEK (ADRBASE + OFFSET): OFFSET = OFFSET + 2
100     V3 = DEEK (ADRBASE + OFFSET): OFFSET = OFFSET + 2
110     PRINT "V1 = ";V1;", V2 = ";V2;", V3 = ";V3
120     ' Mes donnees
130     DATA 3, 0, #FE, #FF, 2, 0
Ce programme m'affiche:
 V1 =  3 , V2 =  65534 , V3 =  2
Alors que moi je voudrais qu'il affiche:
 V1 =  3 , V2 =  -2 , V3 =  2
 
Si je remplace la ligne 130 par

130     DATA 3, 0, -2, 0, 2, 0

Je tombe sur le message d'erreur:
?ILLEGAL QUANTITY ERROR IN  40  Shocked

Comment puis-je faire pour avoir
V1 =  3 , V2 =  -2 , V3 =  2
 
Merci d'avance à ceux qui pourront me venir en aide ..

Salut jbperin !

J'ai essayé de t'apporter un élément de réponse :
J'ai codé ce mini programme qui demande un nombre (négatif ou positif ) et le stock en ram adresse 0, puis il lit le nombre à cette même adresse et il l'affiche avec son signe. La condition est que le nombre 16 bits ne soit pas supérieur à 32767 ...
                           
 
Code:

 10 CLS                              
   20 PRINT "NOMBRE:";:INPUT A          
   30 PRINT"N/P";:INPUT S$              
   40 IF S$="N" THENA=A+32768          
   50 DOKE0,A                          
   55 A=DEEK(0)                        
   60 IFA>=32768THENA=A-32768:B=-A:ELSE
  B=A                                  
   70 PRINT "NOMBRE LU EN RAM=";B      

goyo
goyo

Messages : 182
Date d'inscription : 02/05/2014
Age : 48
Localisation : Massy

Revenir en haut Aller en bas

Nombres négatifs  16 bits via DEEK Empty Re: Nombres négatifs 16 bits via DEEK

Message par jbperin le Ven 8 Nov 2019 - 20:47

ha oui ok excellent ! :-)
c'est super astucieux ton histoire.
en plus ça illustre exactement le principe évoqué par kenneth .. c'est nous qui décidons si c'est négatif ou positif  .. et il y a une petite mécanique à faire pour concrétiser ce choix.

Merci pour ce snippet Smile
jbperin
jbperin

Messages : 94
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Nombres négatifs  16 bits via DEEK Empty Re: Nombres négatifs 16 bits via DEEK

Message par kenneth le Ven 8 Nov 2019 - 22:23

Je viens de voir que Zodiac avait ouvert un sujet:
http://forums.oric.org/t100-a-propos-des-pokes-de-valeurs-negatives
kenneth
kenneth
Modérateur

Messages : 782
Date d'inscription : 13/01/2013
Age : 52
Localisation : 972

Revenir en haut Aller en bas

Nombres négatifs  16 bits via DEEK Empty Re: Nombres négatifs 16 bits via DEEK

Message par jbperin le Ven 8 Nov 2019 - 23:46

belle astuce également Smile
jbperin
jbperin

Messages : 94
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Nombres négatifs  16 bits via DEEK Empty Re: Nombres négatifs 16 bits via DEEK

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

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