Forum Oric
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
» rs
Programmation BASIC - Page 2 EmptyDim 31 Mar 2024 - 14:35 par kenneth

» Bla Bla général du Jury
Programmation BASIC - Page 2 EmptyJeu 21 Mar 2024 - 8:51 par Dom50

» carte mère Oric (re)tracée
Programmation BASIC - Page 2 EmptyMar 5 Mar 2024 - 18:54 par kenneth

» Meurtre à Grande Vitesse
Programmation BASIC - Page 2 EmptyDim 25 Fév 2024 - 5:09 par Iurius

» ORIC-1 sur LE BON COIN
Programmation BASIC - Page 2 EmptyVen 23 Fév 2024 - 23:01 par Mcar

» ORIC ATMOS sur LE BON COIN
Programmation BASIC - Page 2 EmptyDim 4 Fév 2024 - 12:06 par kiwilevrai

» Problème d'affichage des couleurs avec un Oric Atmos
Programmation BASIC - Page 2 EmptySam 27 Jan 2024 - 1:26 par pierbail

» Bienvenue dans le Forum des Oriciens
Programmation BASIC - Page 2 EmptyMar 9 Jan 2024 - 12:33 par Dom50

» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
Programmation BASIC - Page 2 EmptyVen 29 Déc 2023 - 14:13 par Arcade-des-Monts

» Bonnes fêtes
Programmation BASIC - Page 2 EmptyMar 26 Déc 2023 - 10:21 par Dom50

» Murders in Venice / Meutres à Venise
Programmation BASIC - Page 2 EmptySam 18 Nov 2023 - 22:44 par retroric

» Un clavier PS/2 pour tester un ORIC
Programmation BASIC - Page 2 EmptyDim 27 Aoû 2023 - 9:49 par Voyageur

» Disquette 3" Sedoric
Programmation BASIC - Page 2 EmptyMar 1 Aoû 2023 - 14:22 par AtomeX

» faire un 6502 avec des phototransistor
Programmation BASIC - Page 2 EmptyDim 16 Juil 2023 - 17:26 par Voyageur

» Oricutron linux et DSK
Programmation BASIC - Page 2 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 242 membres enregistrés
L'utilisateur enregistré le plus récent est AIRBUS44

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

> Culture Club


Le Deal du moment :
Cartes Pokémon 151 : où trouver le ...
Voir le deal

Programmation BASIC

+4
Zodiac
kenneth
Dom50
maximus
8 participants

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

Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par kiwilevrai Mer 19 Mar 2014 - 7:29

Bonjour,

Les adresses sont uniquement nécessaires lorsqu'il s'agit de programmes en langage machine.
J'avais oublié de le préciser  Embarassed 

Bon courage et bonne transformation .TAP en .COM

A plus
kiwilevrai
kiwilevrai

Messages : 263
Date d'inscription : 11/03/2014
Localisation : Nord

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par maximus Mer 19 Mar 2014 - 8:15

Ha Ok merci bien  Very Happy 

Il ne faut pas hésiter à m'expliquer en détail, de plus je suis sur que d'autres apprécieront
maximus
maximus

Messages : 1274
Date d'inscription : 02/12/2012
Age : 63
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par maximus Dim 23 Mar 2014 - 9:32

Bine le bonjour, est il possibe de stocker des valeurs numériques avec POKE ? j'essaie de stocker les valeurs du labyrinthe directement en mémoire, mais j'ai ILLEGAL QUANTITY ERROR en voulant mettre -1

Merci  Wink 
maximus
maximus

Messages : 1274
Date d'inscription : 02/12/2012
Age : 63
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Hialmar Dim 23 Mar 2014 - 10:00

Tu peux pas stocker de valeurs négatives avec des POKE donc soit tu décales tout de 1, -1 devient 0, 0 devient 1...
Ou alors tu le code de façon standard en complément à deux mais du coup ton Max sera à 127 sur un octet au lieu de 255 et quand tu fais un PEEK tu es obligé de faire 128 - la valeur peekée.

PS : c'est dimanche matin donc je suis un peu rouillé et si ça se trouve l'opération est un peu différente mais c'est l'idée.
Oui je me suis bien planté, si tu veux le faire correctement il faut faire ça :
http://fr.wikipedia.org/wiki/Complément_à_deux
Hialmar
Hialmar
Admin

Messages : 840
Date d'inscription : 03/03/2014
Age : 54
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par maximus Dim 23 Mar 2014 - 10:55

Houla des maths, vite un aspégic  clown 
maximus
maximus

Messages : 1274
Date d'inscription : 02/12/2012
Age : 63
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Hialmar Dim 23 Mar 2014 - 11:40

Bon j'ai essayé de faire du complément à 2 avec le BASIC Oric et c'est clairement galère puisqu'on a rien pour faire de l'arithmétique binaire.

Je te conseille plutôt de trouver tes valeurs min (exemple -10) et max (exemple 100) et de faire comme ça :
Si V contient la valeur a stocker, tu poke V-min
Ensuite après le peek tu ajoute min.

Dans mon exemple ça donne des poke adr,V+10 et des peek(adr)-10.

Attention de bien vérifier que max-min+1<=255 sinon tu va te reprendre une ILLEGAL QUANTITY ERROR.
Si tu veux des valeurs plus grandes il te faut faire avec des deek et des doke mais si ton but est d'économiser de la mémoire ça va pas être très utile.
Hialmar
Hialmar
Admin

Messages : 840
Date d'inscription : 03/03/2014
Age : 54
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par kenneth Dim 23 Mar 2014 - 12:06

Il faut etre sur qu'il n'y ait pas de valeurs décimales, sinon tout ce qui se trouve derriere la virgule disparait. Dans le cas obligé:
pour stocker V=3.22 multiplier par 100 puis le rediviser au moment de le récuperer. Comme la valeur dépasse 255, je la place dans un double octet avec DOKE

DOKE ADR,V*100

pour lire la valeur
V=DEEK(ADR)/100

Si je prends l'exemple le plus tordu avec des valeurs négatives, décimales et grandes en suivant le conseil de Hialmar

V=-300.22

DOKE ADR,V*100+32768

Pour lire la valeur
V=(DEEK(ADR)-32768)/100

Avec ca on peut gerer de -327.68 a +327.67

A plus Wink 

kenneth
kenneth
Modérateur

Messages : 879
Date d'inscription : 13/01/2013
Age : 56
Localisation : 63

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Hialmar Dim 23 Mar 2014 - 12:07

Ah oui c'est vrai j'avais supposé que tu ne gérais que des entiers.
Hialmar
Hialmar
Admin

Messages : 840
Date d'inscription : 03/03/2014
Age : 54
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par maximus Dim 23 Mar 2014 - 13:39

Merci messieurs  Wink 
maximus
maximus

Messages : 1274
Date d'inscription : 02/12/2012
Age : 63
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Hialmar Ven 28 Mar 2014 - 9:11

Je suis en train de lire le bouquin de Geoff Phillips et c'est super intéressant :
http://home.btconnect.com/geffers/files/contents.htm

Pour les problèmes d'optimisation mémoire il y a quelques infos là dedans :
http://home.btconnect.com/geffers/files/chap2.htm

En particulier, il dit que les variables entières ne prennent pas moins de place que les variables numériques (7 octets dans les deux cas).
Pour avoir un gain de place il faut faire des tableaux et là on passe à 2 octets par "case" du tableau ce qui est bien plus efficace. Du moins si on en a beaucoup car il y a un entête de 5 octets + 2 octets par dimension donc ça commence à être intéressant à 3 car on remplace 3*7 = 21 octets par 5 + 2 + 2*3 = 13 octets.
Bien sûr stocker avec un POKE dans un octet c'est encore mieux mais moins pratique.
Hialmar
Hialmar
Admin

Messages : 840
Date d'inscription : 03/03/2014
Age : 54
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par maximus Sam 29 Mar 2014 - 20:58

^^ Oui c'est sûr qu'il faudrait potasser, mais j'ai la flemme  Embarassed 

Par contre oui tout ce qui est en DATA peut être stocké dans des tableaux et utilisé avec STORE et RECALL  Very Happy  (merci Chloé)

Quelqu'un sait il comment effacer le CAPS en haut à droite, mais sans passer en minuscule ?
maximus
maximus

Messages : 1274
Date d'inscription : 02/12/2012
Age : 63
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par kenneth Sam 29 Mar 2014 - 21:58

maximus a écrit:

Quelqu'un sait il comment effacer le CAPS en haut à droite, mais sans passer en minuscule ?
POKE48035,0
kenneth
kenneth
Modérateur

Messages : 879
Date d'inscription : 13/01/2013
Age : 56
Localisation : 63

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par maximus Sam 29 Mar 2014 - 22:32

Merci  Wink 

maximus
maximus

Messages : 1274
Date d'inscription : 02/12/2012
Age : 63
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Dom50 Sam 29 Mar 2014 - 23:19

Attention Maxi,
si tu utilises STORE et RECALL pour sauver des variables ton jeu ne tournera pas sur disquette. Ces deux instructions ne sont pas gérées par SEDORIC.
Dom50
Dom50

Messages : 916
Date d'inscription : 06/12/2012
Localisation : Normandie

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par maximus Dim 30 Mar 2014 - 10:45

flute, crotte de bique et caca boudin, ...  Shocked 

j'ai aucune pratique de sédoric (n'ayant jamais eu de lecteur de disquette)

y a t il un équivalent qui permet de ne pas mettre tous les datas dans le programme principal ? mais à part, afin d'économiser de la mémoire

maximus
maximus

Messages : 1274
Date d'inscription : 02/12/2012
Age : 63
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Dom50 Dim 30 Mar 2014 - 12:42

j'ai testé un truc qui a l'air de marcher. Je te le livre tel quel.
 
Ecrire un premier programme BASIC pour créer les variables. Pour gagner réellement de la place comme le disait Hialmar, il vaut mieux des variables entières (%).
(par exemple)
10 DIMA%(10,10),B%(25)
20 FORI=0TO10
25 FORJ=0TO10
30 A%(I,J)=I*J (c'est un exemple, tu peux mettre ici une série de DATAet un READ)
40 NEXTJ,I
60 FORI=0TO25
70 B%(I)=16 (encore un exemple initialisation à une valeur constante)
75 NEXT
80 SAVEO"DATA.DAT",A DEEK(#9E),E DEEK(#A0) (sauve d'un coup la zone mémoire qui contient les valeurs des deux tableaux)
 
Pour comprendre ce bout de listing il faut savoir que les tableaux sont stokés entre les adresses contenues dans $9E-$9F (début des tableaux) et $A0-$A1 (fin des tableaux)
 
Donc, on crée les tableaux normalement et on sauve sur disquette, la zonne mémoire correspondante.
 
 
Dans le programme utilisateur ci dessous:
 
10 DIMA%(10,10),B%(25)
20 LOAD"DATA.DAT",A DEEK(#9E)
30 PRINTB%(22)
40 PRINTA%(5,9)
 
On crée les tableaux  par une suite d'instructions DIM identique à celle du premier programme.
puis immediatement derrière on charge les données, mais c'est là l'astuce, à la valeur actuelle (correspondant à CE listing) de l'adresse de début des tableaux. D'où le DEEK(#9E) après le LOAD.
 
Ca à l'air de marcher  Smile 
 
Après l'excution du premier programme les tableaux sauvés sont entre $05AB et $06E1.
Ils sont rechargés dans le deuxième entre $054E et $0684.
 
Les deux PRINT donnent bien 16 et 45 ....
Dom50
Dom50

Messages : 916
Date d'inscription : 06/12/2012
Localisation : Normandie

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par maximus Jeu 3 Avr 2014 - 0:03

Zut j'avais raté ton message Domi  Wink 

Merci beaucoup, j'en prends bonne note, il me faudra bien abandonner STORE/RECALL pour la version finale, mais pour le moment c'est plus simple pour moi d'utiliser les versions K7, car l'OSDK produit des fichiers TAP, rendez vous donc à la fin dans ...?? xx mois pour la version disquette  Wink 
maximus
maximus

Messages : 1274
Date d'inscription : 02/12/2012
Age : 63
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Hialmar Ven 25 Avr 2014 - 14:48

Je suis en train de réfléchir au passage du jeu au format disquette et je reviens sur ce message.

Le problème c'est qu'il faudrait sauver les tableaux indépendamment les uns des autres (comme le font STORE et RECALL).

Est-ce que quelqu'un à une idée de comment faire pour récupérer l'adresse de début et celle de fin d'un tableau ?

Je peux calculer tout ça à la main bien sûr mais si il y a une solution plus simple je suis preneur.

Je pense qu'en plus pour les tableaux de chaines de caractères ça va être encore plus compliqué.
Hialmar
Hialmar
Admin

Messages : 840
Date d'inscription : 03/03/2014
Age : 54
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Hialmar Ven 25 Avr 2014 - 16:51

Bon je croyais avoir trouvé une solution en utilisant les fichiers séquentiels de Sedoric mais j'ai un pb.

Voilà mon code :
Code:

 1 PRINT "CRETAB"                   
  10 DIM A%(10,10)                   
  15 DIM B%(25)                       
  20 FOR I=0 TO 10                   
  25 FOR J=0 TO 10                   
  30 A%(I,J)=I*J                     
  40 NEXT J,I                         
  60 FOR I=0 TO 25                   
  70 B%(I)=16                         
  75 NEXT                             
  80 OPEN S,"DATA.DAT",0               
  90 PUT 0,10                         
  100 PUT 0,10                       
  110 FOR I=0 TO 10                   
  120 FOR J=0 TO 10                   
  130 PUT 0,A%(I,J)                   
  140 NEXT J,I                       
  150 CLOSE 0             

J'ai repris le programme de Dom mais au lieu de sauver avec les adresses, j'ouvre un fichier séquentiel, j'y écrit les tailles de la matrice A%, puis toutes les valeurs et je ferme le fichier.

Mais ça me génère l'erreur : ?FILE NOT OPEN ERROR IN 90
Si j'exécute les commandes à la main ça marche mais pas dans le programme.
Code:

  OPEN S,"DATA.TAB",0                 
                                       
  Ready                               
  PUT 0,10                             
                                       
  Ready                               
  CLOSE                               
                                       
  Ready                               
  OPEN S,"DATA.TAB",0                 
                                       
  Ready                               
  TAKE 0,A                             
                                       
  Ready                               
  PRINT A                             
  10                                 
                                       
  Ready                               
Hialmar
Hialmar
Admin

Messages : 840
Date d'inscription : 03/03/2014
Age : 54
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Dom50 Ven 25 Avr 2014 - 17:49

Hialmar a écrit:Mais ça me génère l'erreur : ?FILE NOT OPEN ERROR IN 90
J'ai l'impression, après consultation de la doc du microdisc, que les numéros de fichiers doivent commencer à 1 et non à 0

Essaie :  80 OPEN S,"DATA.DAT",1

Ca va peut-être marcher  Very Happy
Dom50
Dom50

Messages : 916
Date d'inscription : 06/12/2012
Localisation : Normandie

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Invité Ven 25 Avr 2014 - 17:55

Bonsoir,

si tu ouvre ton fichier en premier ligne 5 tu n'as pas de message d'erreur !!

5 OPEN S,"DATA.DAT",0
bien sur il faut supprimer la ligne 80

à tester
Anonymous
Invité
Invité


Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Hialmar Ven 25 Avr 2014 - 18:11

Merci je vais tester ça.

C'est probablement parceque l'ouverture prend du temps non ?
Hialmar
Hialmar
Admin

Messages : 840
Date d'inscription : 03/03/2014
Age : 54
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Invité Ven 25 Avr 2014 - 18:35

Réponse !!

Programmation BASIC - Page 2 2014-014

Programmation BASIC - Page 2 2014-015
Bon courage pour la suite  Smile 

@++
Anonymous
Invité
Invité


Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Hialmar Ven 25 Avr 2014 - 19:17

Je viens de tester et ça marche nickel.

Pour le second programme qui ne fait que lire ça marche aussi très bien sans le délai donc ça vient  probablement d'autre chose qu'un problème de vitesse.

Je remet les deux programmes au cas où ça intéresserait quelqu'un :

Code:

  1 PRINT "CRETAB"                   
  5 OPEN S,"DATA.DAT",0               
  10 DIM A%(10,10)                   
  15 DIM B%(25)                       
  20 FOR I=0 TO 10                   
  25 FOR J=0 TO 10                   
  30 A%(I,J)=I*J                     
  40 NEXT J,I                         
  60 FOR I=0 TO 25                   
  70 B%(I)=16                         
  75 NEXT                             
  85 WAIT 100                         
  90 PUT 0,10                         
  100 PUT 0,10                       
  110 FOR I=0 TO 10                   
  120 FOR J=0 TO 10                   
  130 PUT 0,A%(I,J)                   
  140 NEXT J,I                       
  150 CLOSE 0                         
Code:
                                   
   1 PRINT "LOATAB"                    
  5 OPEN S,"DATA.DAT",0                
   10 DIM A%(10,10)                    
  15 DIM B%(25)                        
   90 TAKE 0,A                          
   100 TAKE 0,B                        
  110 FOR I=0 TO A                    
  120 FOR J=0 TO B                    
  130 TAKE 0,A%(I,J)                  
  135 PRINT A%(I,J)                    
   140 NEXT J,I                        
  150 CLOSE 0
Hialmar
Hialmar
Admin

Messages : 840
Date d'inscription : 03/03/2014
Age : 54
Localisation : Toulouse

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Programmation Basic

Message par Zodiac Ven 25 Avr 2014 - 20:24

Bonsoir Hialmar,

Cela provient du fait que le SED réserve un tampon, pour les entrées sorties lors de l'ouverture d'un fichier . Donc il est préférable de déclarer tes ouvertures de fichiers avant toute affectation de variable (dans ton cas le tableau A%).
D'ailleurs dans le cas d'autres SED tel que RANDOS ou autres, il faut déclarer, au début du programme un FILES N (N représentant le nombre de tampon à réserver ).
Pour tester mes dires dans ton programme, place une Ligne 77 CLEAR et tu verras que tu n'auras pas d'anomalie, mais c'est sûr du fait du CLEAR, le tableau A% est repassé à zéro avant le OPEN.
Au fait, de mémoire, je crois que le début de la zone des tableaux se trouve en  9E et 9F. Mais je pense que c'est possible de calculer l'adresse ou est stocké un tableau.

A+
Zodiac
Zodiac

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

Revenir en haut Aller en bas

Programmation BASIC - Page 2 Empty Re: Programmation BASIC

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

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

Revenir en haut

- Sujets similaires

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