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

» Bla Bla général du Jury
fichiers joints EmptyJeu 21 Mar 2024 - 8:51 par Dom50

» carte mère Oric (re)tracée
fichiers joints EmptyMar 5 Mar 2024 - 18:54 par kenneth

» Meurtre à Grande Vitesse
fichiers joints EmptyDim 25 Fév 2024 - 5:09 par Iurius

» ORIC-1 sur LE BON COIN
fichiers joints EmptyVen 23 Fév 2024 - 23:01 par Mcar

» ORIC ATMOS sur LE BON COIN
fichiers joints EmptyDim 4 Fév 2024 - 12:06 par kiwilevrai

» Problème d'affichage des couleurs avec un Oric Atmos
fichiers joints EmptySam 27 Jan 2024 - 1:26 par pierbail

» Bienvenue dans le Forum des Oriciens
fichiers joints EmptyMar 9 Jan 2024 - 12:33 par Dom50

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

» Bonnes fêtes
fichiers joints EmptyMar 26 Déc 2023 - 10:21 par Dom50

» Murders in Venice / Meutres à Venise
fichiers joints EmptySam 18 Nov 2023 - 22:44 par retroric

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

» Disquette 3" Sedoric
fichiers joints EmptyMar 1 Aoû 2023 - 14:22 par AtomeX

» faire un 6502 avec des phototransistor
fichiers joints EmptyDim 16 Juil 2023 - 17:26 par Voyageur

» Oricutron linux et DSK
fichiers joints 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


-21%
Le deal à ne pas rater :
LEGO® Icons 10329 Les Plantes Miniatures, Collection Botanique
39.59 € 49.99 €
Voir le deal

fichiers joints

5 participants

Aller en bas

fichiers joints Empty fichiers joints

Message par Dom50 Mer 24 Juin 2015 - 22:21

Bonjour,
J'ai un problème que j'aimerais bien solutionner ou, au moins contourner Smile
Voilà : Dans un code BASIC je charge un module complémentaire en fonction du choix fait dans un menu.

Tous les modUles sont du code BASIC dont les lignes sont numérotées à partir de 20000.

J'ai donc des llignes du genre :
IF C= 1 THEN INTRO,J: GOSUB 20000
IF C=2 THEN PARTIE1,J:GOSUB 20000
IF C=3 THEN PARTIE2,J: GOSUB 20000

J'utilise cette méthode de fichiers joints pour éviter d'avoir un CODE BASIC trop volumineux (La somme de toutes les options) qui ne me laisserait plus la place nécessaire aux routineS LM.

Que se passe t-il lors de l'exécution ? Eh bien chaque fichier joint se charge bien comme prévu à la suite du code principal, mais le l'exécution du programme s'arrête après le chargement. (Le GOSUB 20000 ne s'exécute pas)

Quelqu'un connait-il une astuce pour ne pas interrompre le programme après un chargement de fichier joint ?

Dom50
Dom50

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

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par didierv Mer 24 Juin 2015 - 23:23

Bonjour Dom,

Je découvre cette astuce (je n'ai vraiment jamais trop utilisé sedoric)
je me pose les questions et idées suivantes à la suite du chargement :

1/ que dis le pointeur de suivi du basic ? reste t'il sur la ligne après chargement du module ?
2/ peut etre peux tu lancer en auto le module qui se charge à 20000 et faire un goto pour revenir après ta série de if ...
3/ si le module démarre en auto avec un return à la ligne 20000 et ensuite tu fais gosub 20010 ?
4/ est ce que si tu mets explicitement un load "intro,j":gosub 20000 cela change la donne ?

Avec des modules de taille différente, je me demande bien ce que cela doit donner dans la gestion de l'espace des variables.
Didier
didierv
didierv

Messages : 810
Date d'inscription : 19/01/2014
Age : 61
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par kenneth Jeu 25 Juin 2015 - 20:25

le rajout de lignes Basic par chargement suppose une reconfiguration automatique de toutes les variables (tableaux chaines caracteres etc) pour continuer le programme comme si rien était. Je ne pense pas que ce soit faisable sans arreter le prog. Sinon il faudrait sauvegarder les morceaux (appeles par un GOSUB) en mode LM avec un petit code en en-tete executable auto qui recopierait ce morceau juste à la suite du prog principal, remettrait à jour les pointeurs et...provoquerait un RUN en rom pour faire repartir le tout avec en inconvénient toutes les valeurs des personnages effacees ! (sinon tout le programme BASIC serait transformé en bouillie). Il est préférable de faire des CLOAD de temps en temps pour récuperer des segments de donnees sauvegardées en mode LM ce qui n altère pas le fonctionnement du programme en BASIC. Wink
kenneth
kenneth
Modérateur

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

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Dom50 Jeu 25 Juin 2015 - 23:27


Oui Kenneth, tu as probablement raison.
J'avais pensé "bêtement" que puisque le chargement d'un programme joint était admis en mode programme (en plus du mode direct) la moindre des choses était que ça n'arrêterait pas le programme Smile

tel que cela fonctionne , chargement des lignes de code supplémentaires puis arrêt du programme... l'intérêt est plus que limité (figure de style pour dire NUL ) Very Happy
Dom50
Dom50

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

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Hialmar Ven 26 Juin 2015 - 8:41

Le seul intérêt que j'y vois c'est pour optimiser une disquette de travail.

Tu découpes ton prog Basic en plusieurs morceaux ré-utilisables et avant de faire la version définitive tu "Join" ce qui t'intéresse et tu re-numérote le tout.
Hialmar
Hialmar
Admin

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

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Symoon Ven 26 Juin 2015 - 20:10

En sauvant les "modules complémentaires" en mode AUTO, lorsqu'ils sont chargés par un LOAD,J , cela redémarre tout le programme.
Donc si avant de charger ton module complémentaire, tu peux t'arranger pour sauver tes variables, et les relire au début du programme (avec aussi une variable te disant où poursuivre l'exécution), tu dois pouvoir faire "comme si".
Il faudra aussi réinitialiser le fichier de sauvegarde dès qu'il sera lu, sinon en cas de lancement normal du programme, tu vas te retrouver avec les vieilles valeurs de tes variables.

Je ne sais pas si je suis très clair...
Symoon
Symoon

Messages : 779
Date d'inscription : 26/04/2014

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Symoon Ven 26 Juin 2015 - 21:46

Sinon la solution viendra peut-être de la commande MERGE (,L pour éviter des affichages intempestifs).
D'après Sedoric à Nu, il conserve les variables.
Pb: je viens de faire un test rapide, ça marche une fois pour ajouter des lignes, mais si elles existent déjà il produit l'erreur "Lines already exists"
Symoon
Symoon

Messages : 779
Date d'inscription : 26/04/2014

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Dom50 Ven 26 Juin 2015 - 23:01

@Symoon
Oui MERGE est peut-être une solution. Merci !
Il faut que j'essaie.
D'après le manuel de SEDORIC, la commande DELETE est utilisable en mode programme. On doit donc pouvoir supprimer les lignes du module précédant, avant de MERGER le module suivant...
Reste à voir ce que deviennent les variables avec ce DELETE en mode programme... Smile

Sinon Hialmar et Maxi m'ont donné une autre astuce qui fonctionne à coup sûr puisque utilisée par Maxi pour T3...
Dom50
Dom50

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

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Symoon Sam 27 Juin 2015 - 13:31

Ah, bah sauf si c'est secret défense ou trop long à expliquer, n'hésitez pas à la faire connaître, cette astuce Wink
Symoon
Symoon

Messages : 779
Date d'inscription : 26/04/2014

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Dom50 Lun 29 Juin 2015 - 19:54

Very Happy pas de secret entre oriciens  Very Happy

hialmar a écrit:Ah si pour résoudre ton pb tu peux faire comme Maximus :
- tu n'utilises pas le Join mais des chargements successifs qui remplacent donc tout le code ;
- tu planques une info dans une partie de la RAM (inaccessible au Basic) dont tu connais la valeur (exemple au début du jeu de caractères alternés c'est toujours des 85 au démarrage - Maximus utilise lui la zone réservée juste avant la ROM mais Sédoric y stocke des routines donc pas glop) ;
- tu testes cette valeur au chargement du programme menu. Si c'est un 0 pas de pb. Si c'est un 1 (ou autre) tu fais un GOTO sur une ligne située après celle de chargement dans le menu.

CODE:

1 IF PEEK(#B800)=1 THEN 10005
2 IF PEEK(#B800)=2 THEN 10015
2 IF PEEK(#B800)=3 THEN 10025

...
10000 IF C= 1 THEN INTRO
10005 GOSUB 20000
10010 IF C=2 THEN PARTIE1
10015 GOSUB 20000
10020 IF C=3 THEN PARTIE2
10025 GOSUB 20000

Et à la fin de INTRO tu fais un POKE(#B800,1)
à la fin de PARTIE1 tu fais un POKE(#B800,2)
...
Dom50
Dom50

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

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Dom50 Lun 29 Juin 2015 - 20:10

Ceci étant dit,
j'ai réussi à faire fonctionner DELETE 20000- : MERGE"INTRO",L   Smile

Dans un premier temps, j'avais le message "INSERT MASTER DISC"
Hop, un coup de pach.001 (Merci André)
Et je croyais être quitte, mais non... car la commande MERGE demande systématiquement que l'on introduise le disc avec les données à MERGEr...
Je m'en suis tiré en modifiant SEDORIC ... à l'aide de NIBBLE comme pour la disquette de TYRANN (Cf Mag Septembre 2011)
L'ordre MERGE est dans la banque 3 Le code à modifier en C698c soit piste 4 secteur #0A de la disquette SEDORIC.

J'ai simplement remplacé
C695c JSR D44F      Lit nom de fichier
C698c PHP
C699c PHA
C69Ac BIT C016
C69Dc BPL C6A9
C69Fc LDX #03     Indexe message "LOAD"
C6A1c JSR D364    Affiche LOAD
C6A4c JSR D648    Affiche DISC IN DRIVE A AND PRESS RETURN
C6A7c BCS C692
C6A9c PLA
C6AAc PLP
C6ABc CLC

par :

C695c JSR D44F   Lit nom de fichier
C698c JMP C6AB  Saute à la suite sans passer par les messages importuns
C69Bc NOP
C69Cc NOP
C69Dc NOP
C69Ec NOP

Et ça fonctionne !


Dernière édition par Dom50 le Mar 30 Juin 2015 - 22:04, édité 1 fois
Dom50
Dom50

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

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Hialmar Mar 30 Juin 2015 - 11:06

Ah oui quand même... Smile

T'es sûr que t'aurais pas du remplacer les commandes enlevées par des NOP en laissant les JSR au même endroit ? Des fois il y a des optimisations qui consistent à faire un JSR en plein milieu d'une routine. Ca existe dans la ROM en tout cas.
Hialmar
Hialmar
Admin

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

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Dom50 Mar 30 Juin 2015 - 22:02

Tu veux dire remplacer, le code entre $C69D et $C69E par des NOP ?
oui, ce serait plus propre, c'est sûr Smile

(message précédent édité...)
Dom50
Dom50

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

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

Message par Symoon Mar 30 Juin 2015 - 23:17

Merci !
Bon eh ben pas si simple tout ça Wink
Est-ce que charger un petit bout de programme assembleur au début, puis la suite du programme, ne serait pas une solution ?
(genre juste un RTS au début du module, comme on fait sur ROM1.0 pour charger une page HIRES sans revenir au Ready)
Symoon
Symoon

Messages : 779
Date d'inscription : 26/04/2014

Revenir en haut Aller en bas

fichiers joints Empty Re: fichiers joints

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