Derniers sujets
» Aux couleurs de l'Atmos
Nombres négatifs  16 bits via DEEK EmptyAujourd'hui à 7:23 par Voyageur

» Problème sur mix BASIC / ASM
Nombres négatifs  16 bits via DEEK EmptyHier à 17:30 par jbperin

» ?Syntax error
Nombres négatifs  16 bits via DEEK EmptyDim 17 Nov 2019 - 21:11 par Symoon

» jeu Rain Panic
Nombres négatifs  16 bits via DEEK EmptyDim 17 Nov 2019 - 16:17 par Dom50

» GRANDAD
Nombres négatifs  16 bits via DEEK EmptyDim 17 Nov 2019 - 15:45 par Dom50

» rs
Nombres négatifs  16 bits via DEEK EmptySam 16 Nov 2019 - 6:42 par kenneth

» basic & lib ASM___[RESOLU]
Nombres négatifs  16 bits via DEEK EmptyJeu 14 Nov 2019 - 13:58 par Dbug

» La quête des anneaux
Nombres négatifs  16 bits via DEEK EmptyJeu 14 Nov 2019 - 0:50 par Ladywasky

» I had a dream .. glOric
Nombres négatifs  16 bits via DEEK EmptyMar 12 Nov 2019 - 18:22 par Dbug

» **NEW** EDGE for ORIC !!!!
Nombres négatifs  16 bits via DEEK EmptyLun 11 Nov 2019 - 12:21 par jbperin

» Listings de l'ORIC-1 Manual
Nombres négatifs  16 bits via DEEK EmptySam 9 Nov 2019 - 21:35 par jbperin

» Atmos à vendre
Nombres négatifs  16 bits via DEEK EmptySam 9 Nov 2019 - 16:56 par Dbug

» Musique de Goldorak sur Oric
Nombres négatifs  16 bits via DEEK EmptySam 9 Nov 2019 - 16:52 par Dbug

» Nombres négatifs 16 bits via DEEK
Nombres négatifs  16 bits via DEEK EmptyVen 8 Nov 2019 - 23:46 par jbperin

» CEO-MAG 354
Nombres négatifs  16 bits via DEEK EmptyVen 8 Nov 2019 - 16:22 par jbperin

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 2015 - 14:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 199 membres enregistrés
L'utilisateur enregistré le plus récent est fminisini

Nos membres ont posté un total de 8154 messages dans 704 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 : 33
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 : 749
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 : 33
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 : 33
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 : 181
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 : 33
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 : 749
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 : 33
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