Blog

  • Compte rendu de la visu hivernale 2020

    Comme d’habitude, nous nous sommes retrouvés vers 12h – 12h30 au Restaurant Nord-Est, qui est un des moyens les plus économiques que l’on puisse avoir pour nous restaurer. Les habitués étaient présents ; Jean bien sûr notre vénérable président, René notre trésorier adjoint et artisan du renouvellement des adhésions, Jean-Marc B., Christian L, et moi-même.
    Il était pratiquement 14h quand nous avons quitté le restaurant pour retrouver notre salle. Elle n’est pas très loin mais nous avons pris une sécurité au vu du repas clôturé avec une dégustation de calva, cognac et autres substances dignes de la prohibition.

    Présents : Christian L, René P, Jean-Marc B, Laurent D, Jean B, Didier V., et Simon G. Une visu finalement assez confidentielle en regard des dernières.

    Une fois n’est pas coutume, nous attaquons la réunion par les bilans et autres points d’organisation à préciser.

    Quelques moments de détente avant que le trésorier ne nous assaille de chiffres …

    Bilan Financier : Les charges à 387,90 en hausse à cause des visus ; mais maîtrisées car nous avons choisit des salles plus petites. Et des rentrées d’argent à 534,78 qui doivent nous permettre de faire désormais des visus plus ambitieuses. Aux adhésions sont venus s’ajouter 4,78 euros de dons issus des paiements paypal ayant initialement posé des soucis pour 10 donateurs.

    Avec l’arrêt des renouvellements auto, nous sommes passés en 2020 à 55 adhérents (dont 4 en 2020).

    Pour mémoire, le club a des adhérents à vie (selon les statuts définis à l’article 18) :

    • Daniel Duffau
    • Vincent Talvas
    • Laurent Chiacherini

    Le rapport financier est approuvé à l’unanimité.
    Le rapport moral est approuvé à l’unanimité

    Le rapport financier est inséré dans le numéro de mars du mag.

    Cette année, quelques changements dans le bureau ; Jérome entre dans le bureau en temps que Vice-Président tandis que René reste membre du Conseil d’Administration en tant que Community Manager.

    Composition du Conseil d’Administration :
    Jean B, Jérôme D. Chloé A., André C, René P., Didier V.

    Composition du bureau :

    • Président : Jean B.
    • Vice-Président : Jérome D.
    • Trésorière : Chloé A.
    • Secrétaire : André C.

    Après quelques échanges et la présentation du fonctionnement du site, quelques décisions sont prises :

    • Le routage de forums.oric.org doit être réalisé prochainement vers le forum interne au oric.bqtt.net/ (Jérome).
    • Il est convenu de garder un lien vers le forum hébergé sur forumactif pour assurer une bonne transition. Laurent regarde pour faire une sauvegarde de cette belle histoire dont on ne peut pas sauvegarder les données facilement.
    • Lors de la transition des mags de la zone oric.org vers le blog, un point d’attention sera porté à la mise en valeur des numéros hors-série (Transfert prévu par Jérome, relecture par Didier). Une anomalie a été détectée durant la visu, la sécurisation des accès aux mags sera vérifiée.
    • Après une démo et l’enregistrement de Jean-Marc sur le site, l’idée d’avoir les droits ci-dessous est validée. Cette ouverture permettrait au CEO de rayonner durablement avec des lecteurs non adhérents.
    Légende :
    R : Lecture
    C : Commentaires
    W : Ecrire
    Visiteur non enregistréInscrit non adhérentInscrit Adhérent CEOInscrit Rédacteur CEO
    Accès aux forums sur les rubriques publiquesRR/WR/WR/W
    Accès aux forums sur les rubriques CEOR/WR/WR/W
    Accès aux articles publics sur oric.bqtt.net/RR/CR/CR/C
    Accès aux articles CEOR/CR/C
    Ecriture d’articlesW
    • Toujours pour améliorer la visibilité des activités du CEO, il est convenu de faire l’ouverture chez google d’un compte pour les associations. Didier s’en charge ; et fera appel à Jérôme et René si besoin pour les informations concernant l’enregistrement de l’association. Cette ouverture doit nous permettre d’avoir un accès “spécifique” à Youtube. (il faudra sans doute effacer la chaîne actuelle)

    La dernière partie de la réunion a été consacrée à la présentation des différents modèles d’Erebus. Il a été regretté qu’une production pour les membres du CEO n’ai pas été organisée. (NDLR et private joke pour les présents : tiens, ce pourrait être une mission du Community Manager)

    Les jeux Fifteen Puzzle et RadarOric ont été testés sur les 2 atmos présents. Le premier Atmos équipé de l’Erebus et magnifié par le boitier issu d’une impression 3D a permis à tous de découvrir sur une vrai Oric ce beau jeu de taquin. Le second était équipé d’un Cumulus (version Zaxxon) pour présenter RadarOric, la dernière production d’André.

    Radar Oric, le soft du mois

    Enfin, nous avons collectivement échangé sur les différences entre les assembleurs XA et CA 65, sur les bricolages modernes permettant de lire les fichiers tap (des Erebus en couleurs pour les plus beaux).
    De quoi nous donner des idées à tester parmi lesquelles :

    • un lecteur gotek avec écran revu pour lire directement les fichiers dsk (Didier a le matériel, mais pas de délai)
    • un lecteur de fichier tap pour ZX Spectrum et C64, qui pourrait être adapté sur Oric et ainsi nous permettre encore de meilleurs accès à notre logithèque.

    il est 19h (la salle étant inoccupée après nous, nous avons pu jouer les prolongations). C’est l’heure de nous disposer et nous regagnons nos gares respectives… et tandis que Jean est de nouveau confronté aux affres de la vie parisienne :
    ma première erreur a été de croire que les trains de la ligne de Chelles repartiraient de la gare Magenta. Ben, non, les travaux ont pris du retard, le départ et l”arrivée des trains sont maintenus gare de l’Est. Prochain départ 20h00, c’est bon, il est 19h55. A 20h00, rien puis une annonce : voyageur malade, départ prévu dans un délai de 10 à 15 minutes, même annonce au bout de dix minutes, mais un départ est prévu à 20h15 sur le quai suivant. Ruée générale vers la voie 23 où le train ne part pas à 20h15. A 20h20, nouvelle annonce, nouveau problème. 20h30, le train de 20h00 démarre à moitié vide sous notre nez. Notre train partira quelques minutes après. Finalement, je descend à Noisy pour finir le trajet en bus, il est 20h57. Nous avons parcouru 8 kilomètres. Ah, les ascenseurs ont été réparés ! “,
    je rentre paisiblement dans le grand nord et commence à rédiger ce compte-rendu … je suis sur que parmi toutes les idées évoquées ce samedi, nous pourrons en voir certaines d’ici à la prochaine visu voire quelques micro-productions proposées aux membres du CEO.

    Rendez vous en Juin. Si tout va bien, la prochaine visu devrait se dérouler sur une journée complète.

  • Sauvegardez vos tableaux (alphanumériques) en toute sérénité (DSTORE / DRECALL version 2)

    Dans un précédent article (voir CEO-Mag n°357), j’expliquais clairement que les commandes DSTORE / DRECALL souffraient de certaines limites dans leur version initiale :

    • Impossibilité de sauver des tableaux à plusieurs dimensions ;
    • Risque d’écrasement de la routine en cas de redéfinition du jeu de caractères alternés ;
    • Utilisation du mode TEXT uniquement.

    Avec cette nouvelle version, ces imperfections appartiennent désormais au passé :

    • La routine loge entre $9400 et $977B, ce qui permet d’utiliser le mode HIRES et de redéfinir les caractères alternés mais nécessite un HIMEM#93FF avant toute utilisation ;
    • Grâce à l’appel de la commande SAVEM de SEDORIC, les tableaux alphanumériques de grandes tailles (et de plusieurs dimensions) peuvent être stockés sur la disquette.

    La syntaxe n’a quant à elle pas évoluée :

    • DSTORE TAB, “Nom Fichier” : sauve un tableau alpha/numérique avec le nom “Nom Fichier” sur disquette
    • DRECALL TAB, “Nom Fichier” : récupère un tableau alpha/numérique portant le nom “Nom Fichier” depuis la disquette

    Le branchement sur la routine se fait désormais grâce à DOKE#4EA,#9400.

    COMMENT ÇA MARCHE ?

    La sauvegarde des caractères qui composent un tableau alphanumérique a toujours lieu en RAM Overlay, de $C400 à $C7FF :

    • $C400-$C401 : nombre d’éléments stockés.
    • $C402-$C7FF : caractères du tableau alphanumérique. Les caractères sont précédés d’un nombre qui indique la taille de la variable alphanumérique en cours de stockage.

    Lorsque l’adresse de stockage en RAM Overlay dépasse $C7FF, une première sauvegarde a lieu sur la disquette. Le stockage des éléments restants reprend alors en RAM Overlay à partir de $C400, et un nouveau fichier sera ajouté au précédent grâce à la commande SAVEM.

    Lors de la récupération des données depuis la disquette, le premier fichier est transféré en RAM Overlay de $C400 à $C7FF.

    Chaque élément du tableau alphanumérique est créé en RAM grâce à la routine $D264/RAM Overlay ($D5AB/ROM) qui réserve une chaîne dont la longueur est dans le registre A (adresse chaîne réservée en $D1-$D2, longueur en $D0).

    Les caractères sont ensuite copiés un par un, depuis la RAM Overlay vers la RAM jusqu’à obtenir la longueur finale de la chaîne en cours.

    Lorsque toutes les chaînes du fichier en cours ont été transférées en RAM, on vérifie s’il existe un fichier “mergé” et on poursuit de la même manière si tel est le cas.

    Au passage, quelques routines en ROM / RAM Overlay :

    • $EA9E (ROM) : Ajuster adresse tableau alphanumérique dans $0209-$02AA ($0C-$0D) et $02AB-$02AC.
    • $D264 ($D5AB/ROM) : Réserver chaîne de longueur A (adresse chaîne réservée en $D1-$D2, longueur en $D0).
    • $E12E (RAM Overlay) : Charger fichier mergé selon valeurs en $C102,x et $C103,x (avec valeur x fixée par le registre X).

    UN BEAU DESSIN VAUT MIEUX QU’UN LONG DISCOURS

    Ci-après, les ordinogrammes des commandes DSTORE et DRECALL afin d’y voir plus clair.

    UN P’TIT COUP DE DÉBOGUEUR POUR LA ROUTE ?

    Les copies d’écran du débogueur ci-dessous montrent le descripteur du tableau alphanumérique M$ et une portion dudit tableau stocké en RAM Overlay.

    Descripteur tableau alphanumérique M$(21)
    Descripteur tableau alphanumérique M$(21)
    Sauvegarde tableau alphanumérique M$ en RAM Overlay

    Après sauvegarde du tableau alphanumérique M$ via la commande DSTORE M$,”TABLEAUM”, un rapide ‘DIR’ permet de vérifier la présence du fichier ‘TABLEAUM’ sur la disquette et de contrôler ses adresses de début ($C400) et de fin ($C6C8) ainsi que le type de fichier ($42).

    Contenu disquette
    STREC.BIN (routine principale #C9400-#977B)
    DEMALPHA (programme de démo en Basic)
    TABLEAUM (Tableau alpha M$ sauvé en #C400-#C6C8)

    Bonnes sauvegardes !!!

  • Initiation à Orix

    Qui travaille sur Orix

    Actuellement, Assinie et moi travaillons dessus. Des tests ont été fait pour faire tourner glOric. Il y a beaucoup de choses de faites, mais elles sont surtout en béta.

    Que permet Orix ?

    Orix est un ensemble de binaires/kernel qui permet de gérer un shell et des routines d’accès au hardware de la carte twilighte. L’objectif est de faire tourner tout ce qu’on veut sur l’oric quelques soit l’OS initial, ou le support (tap/dsk etc).

    Une première démo est sortie il y a en 2017. Cette démo était plus un proof of concept car beaucoup de choses étaient faites par bidouilles.

    Certaines ROM en plus du shell sont disponibles avec leur programme associé :

    • un basic 1.1 modifié pour charger des .tap à partir de la sdcard. Une version existe pour charger sur le port USB avec une clé USB. Il suffirait de charger cette ROM en ROM ou en RAM (car la twilighte board pourrait charger n’importe quelle ROM dans ses 64 banques.
    • le forth modifié pour accéder à la SDCARD, ce n’est ni plus ni moins que teleforth
    • Monitor est un moniteur qui est en réalité teleass en version light car il n’y a pas l’assembleur embarqué pour l’instant

    Quelques commandes linux/unix sont présentes :

    • ls : affiche la liste des fichiers
    • man : affiche la doc d’une commande
    • ./ : lancement d’une commande du répertoire courant
    • cp : copie un fichier
    • mv : déplace un fichier
    • env : permet de voir quelques variables d’environnement
    • sh : qui permet de lancer des script shell minimalistes
    • meminfo : affiche la quantité de mémoire disponible et la quantité de mémoire restante
    • lsmem : affiche l’occupation de la mémoire par les process
    • ps : affiche la liste des process
    • exec : permet de lancer des commandes
    • touch : créé un fichier

    Plusieurs binaires sont disponibles en plus des commandes type linux/unix qui sont propre à Orix

    • bank : affiche les banques disponibles et leur signature
    • help : affiche les commandes en bash et en ROM (avec un paramètre -b pour afficher les commandes de la banque passée en paramètre)
    • viewhrs : permet de voir des images en hires
    • bootfd : démarre le bootsector d’une disquette : ne fonctionne que sur telestrat.
    • twil : permet de piloter la carte twilighte (swap du jeu de banking, passage en SRAM ou en ROM sur les 4 dernières banques de 16KB chacune, affichage du firmware de la carte)
    • vidplay : affiche des vidéos en streamant à partir de la sdcard
    • gunzip : binaire pour décompresser
    • kernupd : pour mettre à jour la rom en direct sur atmos.

    Où en est on sur Orix ?

    Beaucoup de choses sont faites, mais il y a beaucoup de bugs. Tout le monde peut participer, le code est disponible sur github. Le hardware n’est pas ouvert, mais le code oui. Il est possible de faire des ROMs simplement, de rajouter des binaires, travailler sur les process, la mémoire, les drivers.

    Premiers pas sur Orix

    A partir du moment, où vous avez le prompt (sur réel ou Oricutron), commençons par lister les ROM dispos :

    # bank

    Ok mais je n’ai que 7 banques d’affichées ! On me disait que j’avais 32 banques !

    Le choix a été fait de n’afficher que 7 banques tout le temps, mais de jouer sur les banques 4,3,2,1 pour afficher les banques supplémentaires. Ceci afin de garder le fonctionnement iso entre le Telestrat et atmos.

    Basculons de jeu de banques pour la banque 4,3,2,1 : cela ne fonctionne pas avec Oricutron, mais sur réel oui : les banques 4,3,2,1 affichent des signatures différentes :

    # twil -s1
    # bank

    Si dessous la vidéo montre le fonctionnement de la carte est du switch de banque. C’est comme si sur telestrat, nous changions physiquement la cartouche port droit, sauf que c’est ici sans arrêt de machine, car c’est le hard et le soft qui gèrent tout cela.

    En effet, pour garder une compatibilité avec le telestrat, il a été décidé de n’afficher que 7 banques. Aussi, le kernel qui est issu de telemon, ne gère que 7 banques. Pour ne pas à avoir tout à modifier, la twilighte card fonctionne dans le mode “7 banques” tout le temps à l’affichage. A l’avenir, il sera possible de présenter 31 banques. mais cela nécessitera une modif du kernel et du firmware de la carte.
    Aussi, le paramètre “twil -s” accepte une valeur entre 0 à 8. La valeur 4 est un peu spéciale : elle affiche en banque 4,3,2,1 une banque en plus, puis le kernel, puis le basic1.1 puis le shell.

    Démarrer un fichier .tap

    La rom basic11 ne sait gérer que du tap dans un seul fichier. Le multitap ne fonctionne pas. C’est une limite sofware. En revanche, il est possible de charger plusieurs .tap dans le programme basic : un “10 cload “toto.tap”” sera chargé. C’est le cas pour zip&zap par exemple. Prenez des fichiers .tap, et mettez les à la racine de la sdcard. Puis taper :

    # basic11

    La rom basic 11 a démarré

    il suffit de faire le cload du fichier déposé à la racine de la sdcard, le programma va démarrer tant qu’il n’est pas en multitap.

    Comment utiliser Orix actuellement ?

    Actuellement, il n’y a l’émulation que du contrôleur sdcard sur Oricutron. Ce qui veut dire que la partie swap de banques et accès à la RAM supplémentaire n’est pas possible sur Oricutron. Néanmoins, il est déjà possible de l’utiliser. Sur Oricutron, il y a déjà les roms de dispos. Il suffit de démarrer Oricutron en mode telestrat, en mettant en banque 7, le kernel, en banque 6, la rom basic11 modifée et le shell en banque 5

  • Statistiques du site

    Nombre d'articles publiés par mois sur oric.bqtt.net/

    [gvn_schart_2 id=”2887″ width=”200″ height=”200″ ]

    Nombre d’articles publiés par adhérent toutes années confondues

    [gvn_schart_2 id=”2890″ width=”200″ height=”200″ ]

    Stockage occupé sur l’hébergement oric.org

    [gvn_schart_2 id=”2900″ width=”500″ height=”200″ ]

    Nombre de personne qui se sont inscrit sur le site oric.bqtt.net/ (adhérent et non adhérent)

    [gvn_schart_2 id=”2904″]

  • Codigo Maquina Oric-1 Atmos

    Sommaire :

    • Presentación
    • Codigo maquina
    • Estructura del basic
    • Interpretación : funcionamiénto y organigramas de la secuencia principal
    • Interrupciones
    • Cassette
    • Sonido
    • Direcciones
    • Aplicaciones
    • Errores
    • Control
    • Recetario de consulta para la preparación de sus rutinas en codigo máquina
    • Suplemento Oric-Atmos

    Un livre de référence en espagnol.
    A noter que la version ici disponible en téléchargement est une version avec un scan nettoyé et permettant des recherches de texte. Exclu CEO.

    [wpdm_package id=’2871′]

    Téléchargement ouvert à tous

  • L’assembleur de l’Oric1 et Atmos – Programmation en Langage Machine

    Sommaire :

    CHAPITRE I : INTRODUCTION ET RAPPELS
    Les systèmes de numération
    La présentation des nombres
    Les opérations
    Le système Oric
    Le microprocesseur 6502A
    Les codes machine
    CHAPITRE II : OPERATIONS DE BASE
    Exploitation des programmes en C.M.
    Les codes machine de chargement
    Les codes machine qui réalisent les opérations arithmétiques
    CHAPITRE III : BOUCLES, COMPARAISONS, TESTS
    L’écran basse résolution
    Les branchements conditionnels relatifs
    Les comparaisons
    Les opérations logiques
    Les instructions BIT
    CHAPITRE IV : HAUTE DEFINITION, ATTRIBUTS
    Quelques codes machine
    Les glissements et les rotations
    Les attributs série
    L’écran haute résolution
    CHAPITRE V INTRODUCTION AUX TECHNIQUES AVANCEES
    Quelques programmes
    Délai programme
    Génération de nombres pseudo-aléatoires
    L’animation
    CHAPITRE VI : LA MEMOIRE MORTE
    Quelques routines
    Points d’entrée de quelques routines
    Différents moyens d’appeler des codes machine
    ANNEXES
    Annexe I
    Annexe II Liste alphabétique des mnémoniques
    Annexe III : Influence des mnémoniques sur les
    indicateurs
    Annexe IV Table des nombres avec signe pour les valeurs négatives
    Annexe V Conversion Hexadécimal – Décimal

    [wpdm_package id=’2863′]

    Téléchargement ouvert à tous

  • Bogue PRINT@

    par André C.

    Etat de la question

    Le manuel de l’Atmos présente l’ajout du paramètre “@X,Y;” à la syntaxe de la commande PRINT comme une simple option supplémentaire par rapport au PRINT de l’Oric-1, permettant d’afficher aux coordonnées X,Y de l’écran. PRINT@X,Y;plist n’est pas présenté comme une nouvelle commande, mais comme une simple extension de syntaxe.

    D’autre part, rappelons que si on place un “;” à la fin d’une commande PRINT, les coordonnées X,Y de la “case” qui suit le dernier caractère affiché sont mémorisées pour l’impression suivante. Il est alors possible d’utiliser ces coordonnées pour une autre commande d’affichage. Pour le dire plus simplement, après le “;” final, le curseur reste à clignoter au bout du dernier affichage et représente le prochain point d’affichage.

    Ce que ne dit pas le manuel

    Dans certains cas, il peut y avoir un conflit entre les paramètres “@X,Y;” et le “;”final. En effet, au niveau du code, lorsqu’un paramètre “@X,Y;” a déjà été détecté au début de l’analyse de syntaxe, un paramètre “;” en fin de ligne n’est ni rejeté, ni traité correctement.

    En pratique

    Lorsqu’on utilise une série de PRINT@X,Y;”CHAINE”, pour chacune des commande PRINT@, la chaine mentionnée est bien affichée aux coordonnées X,Y indiquées, pas de problème. Si la longueur de la chaîne est supérieure à la place disponible, l’affichage se poursuit tout naturellement à la ligne suivante.

    Si pour une raison quelconque on est amené à mélanger des commandes PRINT@ avec d’autres commandes d’affichage,  on risque de rencontrer des problèmes. Voyons ce qu’il en est avec un exemple.

    Soit le petit programme ci-dessus.

    La chaîne figurant à la ligne Basic 10 comporte 30 caractères. Le premier caractère, un “2”, sera affiché dans la “case” de coordonnées X=2, Y=10. Le dernier caractère, un “1”, sera affiché dans la “case” X=31, Y=10. A cause du “;” final, le curseur restera à clignoter sur la case suivante. (Le déroulé du programme est trop rapide pour voir ce curseur clignotant, sauf si on place une commande GET R$ en fin de ligne).

    La ligne Basic 15 affiche “OK” au curseur, c’est à dire au point X=32, Y=10. Ici encore, le curseur restera en attente sur la case suivante  à cause du “;” final.

    La ligne Basic 20 devrait commencer l’affichage de la chaîne “SALUT LES GARS!” (15 caractères) de la “case” de coordonnées X=16, Y=10 et la terminer à la “case”  X=30, Y=10. Au lieu de ça, seul “SALUT ” est affiché correctement, le reste de la chaîne, soit “LES GARS!”, est rejeté au début de la même ligne n°10 de l’écran et, curieusement, pas à la ligne suivante.

    Vous me direz que le “;” n’a logiquement rien à faire à la fin du PRINT”OK” et que cela relève d’une faute de conception du programme Basic. Peut-être. Mais la commande PRINT proprement dite est mal codée : Lors de l’analyse de syntaxe, la rencontre d’un paramètre “@X,Y;” devrait entraîner la neutralisation des coordonnées X,Y en cours et leur remplacement par celles indiquées par “@X,Y;”.

    Si on retire le “;” après le PRINT”OK” l’affichage rentre dans l’ordre et redevient ce qu’il doit être.

    Ceci montre bien qu’il ne faut pas utiliser de “;” à la fin d’une commande PRINT@, sauf raison particulière et en toute connaissance des risques.

    Il n’est pas toujours simple de comprendre ce qui se passe. Ainsi, si on garde le “;” après le PRINT”OK”, mais que l’on supprime le “;” de la ligne Basic 10, alors la chaîne “SALUT LES GARS!” s’affiche correctement. Le truc, c’est qu’entre temps les paramètres X,Y ont été régénérés lors du retour à la ligne pour afficher “OK”. Même si le curseur reste à clignoter après le “K” de OK, le PRINT@ qui suit opère sans problème.

    Autre petite curiosité, lorsqu’on déplace progressivement l’affichage de la chaîne “SALUT LES GARS!” vers la droite en augmentant la valeur de X à la ligne Basic 20, on observe une rupture pour X=34. Pour X=33, le reliquat “LES GARS!” est rejeté au début de la même ligne de l’écran, alors que pour X=34, il est affiché au début de la ligne suivante, comme il se doit !

    Il n’existe pas de commande LPRINT@, donc pas de problème de ce côté-là.

    Oups !

    J’ai fait en dernier ce que j’aurais dû faire en premier : Vérifier si la bogue “PRINT@;” était déjà connue. Et oui : Vous pouvez consulter le CEO-mag n°10, page 9 de mars 1991, qui en donne une autre démonstration (article de Roger B.).

    Conclusion

    Comme vous l’avez vu, la situation peut devenir complexe quand la syntaxe d’une commande est mal gérée. Il est difficile de prévoir à l’avance le résultat final. Ceci vaut évidemment pour toutes les commandes Basic de l’Oric réputées pour leurs bogues. A la liste IF THEN ELSE, RND(), POS(), CLOAD, POINT(x,y), ‘ (apostrophe pour REM), EDIT, DRAW, il faut donc ajouter PRINT@;

    Salut et Oricité !

  • Récupérez les caractères redéfinis de tous les logiciels : 1 – Méthode

    par André C.

    Dans les deux articles précédents (“Récupérez les écrans des logiciels protégés : 1 – Méthode” et ” 2 – Application : Démo Talisman”) nous avons vu comment mettre à profit le dump de la mémoire généré par les émulateurs. Cela s’applique aussi à la récupération des polices de caractères. A priori, on pourrait croire que la procédure ne présente aucun intérêt pour les programmes non-protégés, puisqu’on peut déjà accéder au contenu de la mémoire. Mais, comme vous le verrez, il peut être indispensable d’établir un rapport entre ce qu’on voit à l’écran et ce qu’il y a en mémoire. D’où l’intérêt du dump.

    Limites et difficultés

    Souvent, les caractères ont été redéfinis en vue de créer une police de caractères (par exemple pour faire un écran-titre). Mais ce n’est pas toujours le cas et même si vous parvenez très facilement à récupérer les jeux 0 et/ou 1, vous ne serez pas forcément au bout de  vos peines :

    1. En effet, les caractères sont souvent redéfinis en vue d’être assemblés pour former des sprites. Il faut donc savoir comment ça s’organise. Solution : Le débogueur de votre émulateur Oric (touche F11 avec Euphoric) vous permet d’examiner l’écran et de comprendre comment sont formés les sprites (avec quels caractères et quelle disposition).
    2. Autre difficulté, les programmes redéfinissent souvent les caractères au fur et à mesure des tableaux du jeu. Un bon exemple est donné par “The Hellion” (voir les articles “Les 101 écrans de The Hellion” de Simon G. (CEO-mag n°240 à 274). Il faut donc déclencher un dump de la mémoire au moment où les nouveaux caractères à récupérer apparaissent à l’écran (touche F9 avec Euphoric).
    3. Enfin, si en général tout va bien avec les programmes Basic, les choses se compliquent souvent avec les programmes écrits en langage machine. En effet, les auteurs optimisent forcément leur code et sont amenés à stocker les caractères/sprites dans un format différent du format habituel et d’utiliser des routines d’affichage spécifiques. Il va sans dire que dans ces cas-là, il faudrait beaucoup investir dans la matière grise…

    La méthode de récupération

    C’est exactement la même procédure que pour les écrans. Seules les adresses changent.

    Comme vous le savez, l’Oric comporte deux jeux de caractères :

    1. Le jeu 0 dit “normal”, situé de #B500 à #B7FF (3 pages de #100 octets), qui compte 96 caractères du code Ascii 32 (espace) au code Ascii 127 (rectangle noir de 6×8 pixels utilisé pour le curseur).
    2. Le jeu 1 dit “semi-graphique”, situé de #B900 à #BAFF (2 pages de #100 octets), qui ne compte que 64 caractères du code Ascii 32 (espace) au code Ascii 95 (rectangle noir de 6×8 pixels, identique au code Ascii 127 du jeu 0).

    Attention, il s’agit des adresses initiales, au boot, c’est-à-dire en mode TEXT. Si le programme passe en mode HIRES, les deux jeux sont déplacés respectivement vers la zone  #9900 à #9BFF pour le jeu 0 et vers la zone #9D00 à #9EFF pour le jeu 1 (voir les tableaux ci-après).

    Fabriquez les en-têtes appropriés

    Pour les 2 jeux de caractères et pour les 2 modes d’écran, il faudra donc prévoir 4 modèles d’en-tête, par exemple avec le petit programme SAUVJEUX suivant (voir le fichier .zip joint à cet article) :

    100 TEXT
    110 CSAVE"SAVJ0TXT",A#B500,E#B7FF
    120 CSAVE"SAVJ1TXT",A#B900,E#BAFF
    130 HIRES
    140 CSAVE"SAVJ0HRS",A#9900,E#9BFF
    150 CSAVE"SAVJ1HRS",A#9D00,E#9EFF
    160 PING
    En-tête de fichier cassette pour le jeu des caractères normaux en mode text
    En-tête de fichier cassette pour le jeu des caractères semi-graphiques en mode text
    En-tête de fichier cassette pour le jeu des caractères normaux en mode hires
    En-tête de fichier cassette pour le jeu des caractères semi-graphiques en mode hires

    Pour avoir un en-tête proprement dit, récupérez les octets du début du fichier .tap, allant du #16 initial au #00 (inclus) situé juste après le nom du fichier. Dans les conditions décrites, chaque en-tête aura au final une longueur de 23 octets. A l’issue de ce petit travail, vous disposerez donc de 4 modèles d’en-tête (voir les 4 figures ci-dessus) que vous garderez précieusement. Les 4 fichiers .tap correspondants sont dans le zip joint à cet article.

    Récupérez les DUMPs

    La procédure de récupération des jeux de caractères est très simple. Les consignes qui suivent concernent Euphoric, mais des fonctions analogues sont disponibles avec les autres émulateurs.

    1. Lancez Euphoric et chargez le logiciel à traiter. Si besoin, lancez l’exécution.
    2. Guettez le moment où les initialisations semblent terminées et où les caractères à récupérer apparaissent à l’écran et pressez la touche F9 pour générer un dump mémoire.
    3. Pressez immédiatement la touche F11 pour figer l’exécution du logiciel et renommez le fichier DUMP généré (sinon il serait écrasé au prochain appui sur F9).
    4. Eventuellement pressez à nouveau la touche F11 pour relancer l’exécution et guettez le tableau suivant. Etc.

    Note : Il pourrait aussi être utile de garder des recopies d’écran afin de pouvoir identifier s’il s’agit d’un écran TEXT ou HIRES (pas toujours évident). Profitez également de l’appui sur F11 pour examiner le contenu des zones #BB80-#BFDF (écran TEXT) ou #A000-#BFDF (écran HIRES).

    Et enfin, récupérez les jeux de caractères

    Il n’est pas toujours facile de déterminer si ce sont les caractères du jeu 0 ou du jeu 1 (ou des 2) qui ont été redéfinis, ni si le programme tourne en mode TEXT ou en mode HIRES. Dans l’expectative, on sera parfois conduit à récupérer plusieurs jeux à l’aveuglette et à juger ensuite des résultats.

    Dans votre éditeur hexadécimal :

    1. Ouvrez le modèle d’en-tête correspondant à la zone à récupérer. CTRL+A puis CTRL+C pour copier les 23 octets du fichier.
    2. Ouvrez un nouveau document. CTRL+V pour y coller l’en-tête. Editez les 8 caractères de forme “SAVJxxxx” pour renommer votre fichier .tap
    3. Ouvrez le fichier DUMP à traiter. Sélectionnez les #0300 (jeu 0) ou #0200 (jeu 1) octets correspondant au jeu ciblé à partir de l’adresse de ce jeu (voir le tableau ci-dessous), puis tapez CTRL+C pour copier la zone sélectionnée.
    4. Pour vous éviter de sauvegarder inutilement un jeu de caractères qui n’a pas été redéfini, demandez à votre éditeur hexadécimal de calculer la checksum de la zone sélectionnée et comparez avec la valeur indiquée dans le tableau ci-dessous (valeurs pour les jeux natifs d’origine Oric).
    5. Allez dans le nouveau document, à la fin de l’en-tête, CTRL+V, pour y coller le jeu.
    6. Sauvegarder votre jeu au format .TAP par exemple sous le nom TOTOJ0.TAP.
    7. Examinez le jeu sauvegardé à l’aide de l’un des nombreux programmes de redéfinition ou de visualisation pour Oric ou à l’aide du programme OricExplorer de Scott Davies.

    Configuration Atmos ou Atmos+Microdisc+Sedoric

    Type de jeu Mode écran Aller à l’offset Octets à sélectionner Checksum Atmos Checksum Sedoric
    Jeu 0 TEXT #B500 #300 #3F70 #4026
    Jeu 1 TEXT #B900 #200 #3F00 #3F00
    Jeu 0 HIRES #9900 #300 #3F70 #4026
    Jeu 1 HIRES #9D00 #200 #3F00 #3F00

    La checksum du jeu 0 sous Sedoric est différente car 6 caractères ont été redéfinis :    à ç é ù è et ê.

    Dans la deuxième partie de cet article, je prendrai deux exemples, “Rush Hour” et “The Hellion”, pour illustrer pas à pas la procédure de récupération des jeux de caractères.

    à suivre…

  • Renouvellement des adhésions

    Comme les adhérents ont payé :

    • soit par chèque
    • soit sur le site directement
    • soit via paypal directement

    Et que le paiement récurrent n’a pas été sélectionné sur le site.

    Cela rend compliqué la réadhésion pour passer à 10 euros l’année suivante.

    Pour ceux qui veulent renouveler via le site, il faudra :

    1. faire un coupon discount sur le menu adhésion pour faire une réduction de 10 euros avec une validité de durée de 1 mois (décembre)
    2. Envoyer un message via la messagerie interne avec l’id de coupon crées à tous les adhérents (sélectionner annonce) pour qu’ils puissent payer juste 10 euros en ligne

    Pour les autres (chèque et envoi directement au compte paypal), cela se fera donc manuellement

    Procédure pour les réadhésions

    30 novembre

    Créer le coupon de 10 euros qui sera d’une validité du 1er décembre au 31 décembre.

    1er décembre

    Envoyer une annonce à tous les adhérents le 1er décembre pour la réadhésion en annonçant :

    • Le paiement par chèque à la trésorière de 10 euros en direct
    • Le paiement paypal de 10 euros à cotisation@oric.org
    • le paiement sur le site mais via coupon

    31 décembre

    • Cloture du coupon
    • Passage de tous les adhérents en “non adhérent” et aussi “adhésion CEO” supprimé
    • Pour chaque paiement chèque, paypal ou coupon, les passer en “adhérents ceo”
    • Attention, certaines personnes ont renouvelé pour 2 ans en 2020
  • Catalog Oric Books

    [ninja_tables id=”2749″]

    Source : Oric Books list supplied by Steve M.