Forum Oric
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
» rs
Nombres négatifs  16 bits via DEEK EmptyDim 31 Mar 2024 - 14:35 par kenneth

» Bla Bla général du Jury
Nombres négatifs  16 bits via DEEK EmptyJeu 21 Mar 2024 - 8:51 par Dom50

» carte mère Oric (re)tracée
Nombres négatifs  16 bits via DEEK EmptyMar 5 Mar 2024 - 18:54 par kenneth

» Meurtre à Grande Vitesse
Nombres négatifs  16 bits via DEEK EmptyDim 25 Fév 2024 - 5:09 par Iurius

» ORIC-1 sur LE BON COIN
Nombres négatifs  16 bits via DEEK EmptyVen 23 Fév 2024 - 23:01 par Mcar

» ORIC ATMOS sur LE BON COIN
Nombres négatifs  16 bits via DEEK EmptyDim 4 Fév 2024 - 12:06 par kiwilevrai

» Problème d'affichage des couleurs avec un Oric Atmos
Nombres négatifs  16 bits via DEEK EmptySam 27 Jan 2024 - 1:26 par pierbail

» Bienvenue dans le Forum des Oriciens
Nombres négatifs  16 bits via DEEK EmptyMar 9 Jan 2024 - 12:33 par Dom50

» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
Nombres négatifs  16 bits via DEEK EmptyVen 29 Déc 2023 - 14:13 par Arcade-des-Monts

» Bonnes fêtes
Nombres négatifs  16 bits via DEEK EmptyMar 26 Déc 2023 - 10:21 par Dom50

» Murders in Venice / Meutres à Venise
Nombres négatifs  16 bits via DEEK EmptySam 18 Nov 2023 - 22:44 par retroric

» Un clavier PS/2 pour tester un ORIC
Nombres négatifs  16 bits via DEEK EmptyDim 27 Aoû 2023 - 9:49 par Voyageur

» Disquette 3" Sedoric
Nombres négatifs  16 bits via DEEK EmptyMar 1 Aoû 2023 - 14:22 par AtomeX

» faire un 6502 avec des phototransistor
Nombres négatifs  16 bits via DEEK EmptyDim 16 Juil 2023 - 17:26 par Voyageur

» Oricutron linux et DSK
Nombres négatifs  16 bits via DEEK EmptyJeu 29 Juin 2023 - 18:34 par Voyageur

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 243 membres enregistrés
L'utilisateur enregistré le plus récent est paul225l

Nos membres ont posté un total de 8922 messages dans 811 sujets
Sites Sympas

> Culture Club


Le deal à ne pas rater :
Jeux, jouets et Lego : le deuxième à -50% (large sélection)
Voir le deal

Nombres négatifs 16 bits via DEEK

3 participants

Aller en bas

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

Message par jbperin 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 : 132
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 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 : 879
Date d'inscription : 13/01/2013
Age : 56
Localisation : 63

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 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 : 132
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 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 : 132
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 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 : 199
Date d'inscription : 02/05/2014
Age : 52
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 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 : 132
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 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 : 879
Date d'inscription : 13/01/2013
Age : 56
Localisation : 63

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 Ven 8 Nov 2019 - 23:46

belle astuce également Smile
jbperin
jbperin

Messages : 132
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


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