Derniers sujets
» recherche un son de bruit de saut
Apprendre l'Assembleur ORIC EmptyHier à 16:59 par goyo

» Oricutron & RS232 "loopback"
Apprendre l'Assembleur ORIC EmptyHier à 14:33 par ]0[v]

» CEO MAG 350
Apprendre l'Assembleur ORIC EmptyJeu 22 Aoû 2019 - 17:19 par andrec

» J'ai fais la musique de Duck Hunt sur Atmos
Apprendre l'Assembleur ORIC EmptyJeu 22 Aoû 2019 - 11:22 par TotoShampoin

» aide requise pour afficher ligne de texte de differente couleur
Apprendre l'Assembleur ORIC EmptyMer 21 Aoû 2019 - 11:13 par ]0[v]

» Pallida mors
Apprendre l'Assembleur ORIC EmptyLun 19 Aoû 2019 - 6:50 par didierv

» Lancement de jeux - Messages d'erreur
Apprendre l'Assembleur ORIC EmptySam 17 Aoû 2019 - 21:54 par Symoon

» Bocco's adventures - nouveau jeu pour Oric
Apprendre l'Assembleur ORIC EmptySam 17 Aoû 2019 - 7:32 par kenneth

» CEO-MAG 351-352
Apprendre l'Assembleur ORIC EmptyVen 16 Aoû 2019 - 21:00 par retroric

» Citadelle V2
Apprendre l'Assembleur ORIC EmptyJeu 15 Aoû 2019 - 21:03 par fred72

» Ghost Town
Apprendre l'Assembleur ORIC EmptyJeu 15 Aoû 2019 - 18:08 par retroric

» Oric Atmos : problème de son
Apprendre l'Assembleur ORIC EmptyMer 14 Aoû 2019 - 18:03 par froggy

» Apprendre l'Assembleur ORIC
Apprendre l'Assembleur ORIC EmptyMar 13 Aoû 2019 - 15:09 par ]0[v]

» The last warrior
Apprendre l'Assembleur ORIC EmptyVen 9 Aoû 2019 - 19:13 par Symoon

» Devoirs de vacances
Apprendre l'Assembleur ORIC EmptyVen 9 Aoû 2019 - 11:22 par fred72

Qui est en ligne ?
Il y a en tout 4 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 4 Invités

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 192 membres enregistrés
L'utilisateur enregistré le plus récent est Иван

Nos membres ont posté un total de 7658 messages dans 660 sujets
Portail ORIC




Apprendre l'Assembleur ORIC

Page 1 sur 2 1, 2  Suivant

Aller en bas

Apprendre l'Assembleur ORIC Empty Apprendre l'Assembleur ORIC

Message par maximus le Dim 12 Nov 2017 - 7:41

Impressionné par les beaux jeux comme Blake's, tout ça c'est grâce à l'assembleur

Mais c'est vraiment dur de s'y mettre, j'ai essayé mais bon Embarassed

Mode Rêve ON:

Arrow les Pros nous font un cours d'ASM ORIC pour les Noobs  Rolling Eyes

Mode Rêve OFF

clown


Dernière édition par maximus le Dim 12 Nov 2017 - 10:04, édité 1 fois
maximus
maximus

Messages : 1255
Date d'inscription : 02/12/2012
Age : 58
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par drpsy le Dim 12 Nov 2017 - 9:02

Je crois qu'il y en a plein les anciens mags ! et en plus en ce moment, une série d'articles passe en revue toutes les instructions du 6502.

Personnellement, j'ai le  petit livre, acheté à l'époque, et auquel à l'époque je n'ai rien compris; vu que personne ne m'avait dit ce qu'était une adresse :


Apprendre l'Assembleur ORIC Asm_or10

L'assembleur de L'oric 1 et Atmos - Programmation en langage machine
Marcel Henrot

Il est en téléchargement ici :

http://www.defence-force.org/computing/oric/library/lib_coding_6502/index.htm

Et aujourd'hui, je n'ai pas vraiment besoin d'une autre référence.

Maximus, qu'est-ce qui te manquerait pour t'y mettre ?

_________________
>++++++++++[<++++++++>-]<.>++++++[<++++>-]<+.----.+++++++++++++..-------------.[-]
drpsy
drpsy

Messages : 201
Date d'inscription : 20/07/2014
Age : 47
Localisation : Lagny sur Marne

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par maximus le Dim 12 Nov 2017 - 9:15

Oui j'ai commencé ce livre, pfiou c'est des pages et des pages sur le fonctionnement de l'ORIC avec 1 mot nouveau toutes les 3 lignes, c'est un livre pour informaticien et pas pour un noob qui n'a fait que du BASIC, je lis binaire, ULA, registres, etc... c'est du lourd quand même Very Happy

j'ai fait le tuto du siteduzero (devenu openclassroom) mais il n'y a que la base, c'est limpide mais hélas incomplet:

https://openclassrooms.com/courses/en-profondeur-avec-l-assembleur

de plus c'est l'assembleur Microsoft MASM

il me faut beaucoup de courage Embarassed Embarassed
maximus
maximus

Messages : 1255
Date d'inscription : 02/12/2012
Age : 58
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par kenneth le Dim 12 Nov 2017 - 10:10

Perso, j'essaie les instructions avec le moniteur d'Oricutron, on se rend mieux compte. Wink
kenneth
kenneth
Modérateur

Messages : 680
Date d'inscription : 13/01/2013
Age : 52
Localisation : 972

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par drpsy le Dim 12 Nov 2017 - 10:32

Ah oui, je te comprends... La plupart des tutoriels sont faits par des gens qui savent déjà, et la difficulté pour eux est de se mettre à la place de ceux qui ne savent pas. Et quand la première barrière, c'est le vocabulaire, c'est compliqué.

On pourrait faire quelque chose : tu essaies, chaque fois que tu ne comprends pas un terme ou un concept, tu poses la question et on y répond !

Je prends les 3 mots que tu as cités :
- binaire : c'est le fameux 0 ou 1 ! écrire un nombre en binaire, c'est le traduire en une suite de 0 et de 1. Exemple :
1 (décimal) = 1 (binaire).
On utilise une "norme" de notation, qui est ensuite utilisée dans les compilateurs. Dans OSDK (mais pas que), un nombre en binaire s'écrit : %xxx. Exemples : 2 = %10. 5 = %101.
Comme on n'a que 2 chiffres, 0 et 1, chaque fois que j'additionne 1 et 1, je pose 0 et je reporte 1.
1+1 = 2
%1 + %1 = %10

Un ordinateur fonctionne sur des nombres binaires, au sens ou pour chaque "chiffre binaire" (O ou 1), il y a un fil qui entre dans le processeur (le cerveau de l'ordinateur). Lorsque le courant passe, on a 1 et lorsqu'il ne passe pas, on a 0.

Sur un ORIC, 8 fils de données entrent dans le processeurs : 8 bits !
Voilà pourquoi le binaire est si important.
Pour éviter de manipuler des séries de 0 et de 1, on travaille plutôt en hexadecimal (base 16, c'est à dire qu'on a 16 chiffres au lieu de 10 pour écrire des nombres), qui se traduit très bien en binaire, puisque chaque chiffre hexadécimal se code sur 4 chiffres binaires.
0 - 0000
1 - 0001
2 - 0010
3 - 0011
4 - 0100
...
9 - 1001
A - 1010
B - 1011
C - 1100
D - 1101
E - 1110
F - 1111
Pour traduite un binaire en décimal, soit on compte avec ses doigts, mais c'est long, soit on fait une addition.
Exemple :
écrire 11100 en décimal.
11100 = 10000 + 01000 + 00100.
10000 = 32 = 2*2*2*2*2 = 2^5. La position du 1 dans le nombre binaire donne exactement le chiffre d'élévation à la puissance de 2.
01000 = 16 = 2^4.
00100 = 8 = 2^3.
11100 = 8+16+32 = 56.
En Hexa, on regroupe les chiffres par 4 : 11100 = 0001 1100 = 1C.
J'espère que c'est plus clair, et désolé si c'était déjà évident pour toi...

- ULA : c'est un composant de l'ORIC qui gère la video et tout un tas de trucs. Normalement, tu n'as pas besoin de ça pour programmer en LM. Ceux qui s'y intéressent sont à un niveau très avancé ! Et de toutes façons, on n'y a pas directement accès.

- Registres : ce sont les variables internes du processeur. Dans un programme BASIC, tu définis autant de variables que tu veux : A, I, B, C, TX$,... et même des tableaux. En langage machine ou assembleur, il est très important de comprendre que le processeur ne sait travailler qu'avec ses variables internes et un seul emplacement mémoire à la fois. D'une manière générale, le processeur prend de l'information d'une cellule mémoire (il fait comme un PEEK en BASIC), applique un traitement dessus (une addition, etc.), et écrit le résultat dans une cellule mémoire (POKE). Suivant les instructions machine, ça peut prendre une seule instruction ou plusieurs en fonction de ce qu'on a à faire. Certaines instructions ne travaillent que sur les registres internes, d'autres sont capables de combiner lecture / opération / écriture.
Les "registres" sont :
A : celui qui permet de faire des additions, soustractions, etc. Le plus utilisé dans les programmes
X et Y : compteurs mais qui permettent aussi de travailler avec A
P : chaque chiffre binaire (bit) de ce registre contient une information importante. Ca sert pour les retenues par exemple. Ou à détecter qu'un nombre est égal à 0. Très important et pas évident à comprendre au début. Tous les tests réalisés par le processeur (équivalent du IF en BASIC) se basent sur ce registre.
PC : adresse de l'instruction courante. Quand on fait un GOTO (JMP en assembleur), on change cette valeur. En basic de l'ORIC, c'est comme si on gardait en mémoire le numéro de ligne BASIC du programme en cours d'exécution. Il change tout le temps. Après chaque instruction, il augmente, à moins d'être modifié par un JMP ou autre instruction de saut.
SP : pointeur de pile. Là, ça nécessite d'autres explications.

_________________
>++++++++++[<++++++++>-]<.>++++++[<++++>-]<+.----.+++++++++++++..-------------.[-]
drpsy
drpsy

Messages : 201
Date d'inscription : 20/07/2014
Age : 47
Localisation : Lagny sur Marne

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par maximus le Dim 12 Nov 2017 - 13:25

Merci drpsy, je dois tout simplement bosser pour p-e m'y mettre, c'est autre chose que le BASIC qui se désintéresse totalement de tout ça

maximus
maximus

Messages : 1255
Date d'inscription : 02/12/2012
Age : 58
Localisation : Nimes

http://cinema.forumactif.org/

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par Symoon le Dim 12 Nov 2017 - 14:34

Deux choses m'ont permis de me mettre à l'assembleur:
1- chercher à comprendre "mais comment ils ont fait ci ou ça ?" => lecture de Sedoric à Nu (très bien expliqué), l'Oric à Nu, ...
2- avoir envie de changer une bricole dans ce bazar => de tous petits projets en assembleur

Je te conseille éventuellement au début, de voir l'assembleur comme un sous-programme basic, appelé par un CALL au lieu de Gosub.
A partir de là, tente de faire de tous petits trucs simples (simples en assembleur ! Car un truc qui paraît "simple" peut être très compliqué à faire en assembleur Wink ).
Ca permet d'entrer dans le concret du sujet.

Par exemple tape
POKE#700,#60
CALL#700
Tu auras fait ton premier programme qui correspond à un GOSUB / RETURN

De mon côté en fait je ne me suis jamais vraiment mis à l'assembleur, mais au langage machine: je code en hexadécimal (avec un bouquin à côté hein Wink), je traduis ensuite en mnémoniques. Archaïque et lent, horrible quand on a oublié quelque chose, exemple à ne pas suivre...
Symoon
Symoon

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

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par drpsy le Sam 18 Nov 2017 - 14:32

L'intérêt du livre de Marcel Herriot, c'est qu'il y a pas pas mal de code décortiqué.
Ce qui m'a le plus aidé, c'est de comprendre ce que faisait chaque instruction dans le code.
Pour débuter, on a besoin de relativement peu d'instructions du processeur.
Beaucoup d'instructions permettent d'optimiser les programmes.

_________________
>++++++++++[<++++++++>-]<.>++++++[<++++>-]<+.----.+++++++++++++..-------------.[-]
drpsy
drpsy

Messages : 201
Date d'inscription : 20/07/2014
Age : 47
Localisation : Lagny sur Marne

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par Dbug le Dim 29 Juil 2018 - 19:01

maximus a écrit:j'ai fait le tuto du siteduzero (devenu openclassroom) mais il n'y a que la base, c'est limpide mais hélas incomplet:
https://openclassrooms.com/courses/en-profondeur-avec-l-assembleur
de plus c'est l'assembleur Microsoft MASM
Fatalement, l'erreur.
La grosse erreur.

"assembleur" ca veut juste dire "langage du processeur", et chaque processeur a son propre dialecte, ses propres outils et des syntaxes qui diffèrent.

C'est comme si tu voulais apprendre l'anglais et que allais t'inscrire au premier cours de "langue vivante étrangère" que tu trouves, sauf que manque de bol c'était de l'Espagnol.

Le 6502, c'est le 6502.
Le 80x86, c'est le 80x86.

Il y a des similarités, mais c'est surtout essentiellement différents dans la facon dont ca marche. En gros les seules trucs communs c'est qu'il y a des instructions, des registres, des modes d'adressage, etc... mais c'est comme de dire que l'anglais c'est presque comme l'espagnol parce qu'il y a des verbes, des noms, des pronoms, et des signes de ponctuation.

En pratique l'assembleur 6502 c'est pas bien plus difficile que le BASIC, le problème c'est juste le niveau d'abstraction: Au lieu de dire "prépare a manger" tu dois a la place donner la liste des instructions une par une: Va au frigo, ouvre la porte du frigo, baisse ton bras vers l'étagère, prend le beurre, pose le beurre sur la table, prend le fromage, pose le fromage sur la table, etc...

Ton second gros problème, c'est que l'essentiel des informations intéressantes sont en anglais.

Je recommandais a l'époque le bouquin signalé plus haut, c'est celui que j'ai aussi utilisé pour apprendre, mais le gros problème est que ca utilise une syntaxe différente de ce qu'on utilise sur les assembleurs modernes... ce qui rend le bouquin quasiment inutilisable.

Aussi, sur tous ces bouquins la, ca ne se lit pas du debut a la fin, les parties sur les modes d'adressage, le binaire, etc... c'est surtout des references. Prend des notes au fur et a mesure, note les trucs louches, et recherche plus tard ou demande.

Pareil avec tout ce qui est programmes de chargement avec DATA, on oublie: On est en 2018, on fait comme tout le monde et on passe par un assembleur sur PC avec un bon editeur de texte, des commentaires et des labels, on assemble tout ca en un fichier executable que l'on charge sur l'oric.

Et pour debugger on passe pas par OricMon et cie... Fabrice et Xeron ont mis des débogueurs en natifs dans leurs émulateurs, c'est largement plus puissant que tout les outils natifs Oric (et ont l'aventage de pas prendre de mémoire ou de se faire écraser en cas de crash).

_________________

Dbug
Dbug

Messages : 182
Date d'inscription : 06/01/2013

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par kenneth le Dim 29 Juil 2018 - 23:01

Tout à fait.
En plus, contrairement au Basic, on est intimement lié avec la mémoire de l Oric et de toutes ses entrées sorties. Donc, pour programmer en assembleur sur l Oric je pense qu il faut trouver des tutos uniquement sur le 6502 et uniquement sur l Oric. Cela évite de s encombrer de subtilités qu on trouve sur d autres processeurs plus fournis en instructions et sur d autres architectures vidéo qui pourrait empêcher la compréhension de l ula, qui est déjà spécial.
kenneth
kenneth
Modérateur

Messages : 680
Date d'inscription : 13/01/2013
Age : 52
Localisation : 972

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par ]0[v] le Ven 2 Aoû 2019 - 10:44

Bonjour à tous,
pourquoi je ré-active ce topic?...
un peu de temps devant moi et j'ai décidé de resortir l'oric et de faire un peu d'assembleur.
Jusqu'à présent j'avais des petites routines simples que je pouvais assembler à la main et charger via un prog. basic
Cette fois-ci je m'attaque à quelque chose d'un peu plus gros donc j'ai besoin de définir des données en page zéro, utiliser les segments .data et .bss suivants les besoins...
Hors il y a moultes syntaxes et je m'y perd un peu donc soit j'utilise
* monasm_V2 trouvé sur le site, merci! Wink
- comment fait t on pour declarer des données dans tel ou tel segment?
- est ce que c'est pertinent de faire avec ça?
* XA d'A.FACHAT pour x-compiler mes routines, hors là le problème c'est que même en suivant les recommandation de la syntaxe j'ai quand même des problèmes (e.g il ne reconnaît pas un label qui apparaît dans un JMP dès le départ et qui est définit plus bas!!!)

Donc plus prosaiquement, que trouvez vous le plus pratique pour écrire un programme assez complexe en assembleur?
Voilà j'attends vos retour...
A+
]0[v]
]0[v]

Messages : 30
Date d'inscription : 25/07/2019

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par kenneth le Ven 2 Aoû 2019 - 12:34

Bonjour ]O[v] et bienvenue!
Pour faire uniquement de l'assembleur, j utilise le moniteur qui se trouve dans l'émulateur Oric nommé Oricutron.
Sinon il y a l'Osdk qui contient tous les outils de developpement.
kenneth
kenneth
Modérateur

Messages : 680
Date d'inscription : 13/01/2013
Age : 52
Localisation : 972

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par goyo le Ven 2 Aoû 2019 - 15:43

kenneth a écrit:Bonjour ]O[v] et bienvenue!
Pour faire uniquement de l'assembleur, j utilise le moniteur qui se trouve dans l'émulateur Oric nommé Oricutron.
Sinon il y a l'Osdk qui contient tous les outils de developpement.

Aussi je pense que l'OSDK est très bien pour se mettre à l'assembleur, au c ou au basic. On a de la change d'avoir un tel SDK Smile

Le truc c'est que faire de l'assembleur brut directement dans des fichiers .s ce n'est pas évidant pour débuter. Perso, je conseille plutôt d'utiliser le langage c et de faire appel à des routines (fichier.s) . Je crois que c'est une bonne transition du basic vers l'assembleur.

Par exemple commencer par réaliser soi-même un petit code assembleur appelée par le c qui affiche un texte à l'écran, c'est très instructif.
goyo
goyo

Messages : 170
Date d'inscription : 02/05/2014
Age : 48
Localisation : Massy

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par ]0[v] le Lun 5 Aoû 2019 - 11:52

@goyo, je débute pas en assembleur Wink c'est juste que je ne suis pas familier avec les outils et que je ne vois pas quel convention de nommage est utilise avec tel ou tel assembleur.
Il me semble que le compilo XA est très bien, c'est juste que j'aimerais trouver une doc claire quand aux conventions utilisées. Par example comme indiquer que telles ou telles variables serons utilisée en page i... ou dans le segment .bss
Après je ne vois pas l'intérêt d'utiliser du C, qui dans ce cas donne un build loin d'être "optimum" pour une machine avec des caractéristique aussi limité... Ce qui peut par contre devenir un excellent exercice pour optimiser le code via l'assembleur Smile
Donc j'ai mal définie ma problématique... je sais pas si c'est plus clair maintenant?... Wink
Je cherche des docs claires et/ou des exemple exhaustif utilisant l'assembleur pour XA
Merci en tout cas pour votre intérêt
]0[v]
]0[v]

Messages : 30
Date d'inscription : 25/07/2019

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par ]0[v] le Lun 5 Aoû 2019 - 12:11

Ok, je viens juste de trouver ça https://www.floodgap.com/retrotech/xa/xa.1.html
Very Happy
]0[v]
]0[v]

Messages : 30
Date d'inscription : 25/07/2019

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par Jede le Lun 5 Aoû 2019 - 15:29

\" a écrit:0[v]"]Ok, je viens juste de trouver ça https://www.floodgap.com/retrotech/xa/xa.1.html
Very Happy

De mon coté, je suis passé définitivement à ca65 après presque 18 ans d'utilisation de xa.

xa est beaucoup simple à utiliser et les syntaxes sont plus simples. Sauf que dans des gros projets (tels qu'orix où il y a des milliers de lignes d'assembleur), je me retrouvais à perdre du temps pour écrire des trucs.

J'aime beaucoup xa, j'aime beaucoup moins la syntaxe ca65 mais pour faire du code plus clair, il y a pas mal de pseudo functions dans ca65 qui règlent bcp de pb sans avoir bidouller dans xa par soi-même (je pense aux struct dispo dans ca65, les calculs de longueurs de chaine, les calculs d'overflow).

Donc de mon point de vue :
Xa : simplicité, écriture logique et agréable
ca65 : assembleur plus poussé qui peut produire parfois du code source compliqué à lire si on le maitrise bien, souplesse des links (via le linker ld65). Simplicité d'écriture dans certains cas qui évitent des moulinettes ou des bidouilles dans xa (je pense au code déroulé qui nécessite des moulinettes dans xa, la gestion des blocs plus simples, les structs, les calculs d'overflow à l'assemblage etc)
Jede
Jede

Messages : 277
Date d'inscription : 20/04/2016
Localisation : Var

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par ]0[v] le Lun 5 Aoû 2019 - 15:46

@jede : merci pour le retour. En revanche y a t il un endroit où l'on peut avoir des examples concret de code pour xa, quand l'on souhaite utiliser par examples des structs, calcul de longueur de chaîne... Pour les examples de codes concernant ca65 je crois comprendre qu'il suffit de regarder le code d'Orix, non Wink
]0[v]
]0[v]

Messages : 30
Date d'inscription : 25/07/2019

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par ]0[v] le Lun 5 Aoû 2019 - 15:48

maintenant que ça compile, j'essaye dobtenir un fichier .tap via la commande header.exe mais ça tourne en boucle sans rien produire. Une idée?..
]0[v]
]0[v]

Messages : 30
Date d'inscription : 25/07/2019

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par assinie le Lun 5 Aoû 2019 - 22:05

Personellement, je n'utilise pas header.exe pour mes dev.

Tu peux simplement ajouter l'entête au début du programme avec des .db par exemple:
Code:

.db $16, $16,$16, $16, $24
.db $ff, $ff, $80
.db auto
.db >end, <end
.db >start, <start
.db $05, "TITRE", $00

Avec:

  • auto: à 0 si tu ne veux pas de démarrage automatique  ou une valeur non nulle dans le cas contraire (je mets 4 mais je ne sais plus si cette valeur est importante)
  • end: le label à la fin du programme
  • start: le label au début du programme
  • 5: la longueur de "TITRE", en pratique cette valeur n'est pas utilisée, l'Oric cherche le 0 à la fin du nom.
  • TITRE: le nom du programme (c'est ce qui apparait sur la ligne de status lors de la lecture)


Tu peux en faire une macro xa à laquelle tu passes certaines valeurs en paramètres comme auto, start, end et "TITRE".

Par exemple, si tu mets systématiquement un label start au début du programme et un label end à la fin:
Code:

#define TAPE_HEADER(a,t) .db $16, $16, $16, $16, $24, $ff, $ff, $80, a, >end, <end, >start, <start, $09, t, $00

Ensuite, tu mets au début du programme:
Code:

#define TAPE_TITLE "MON PROG"
#define AUTOEXEC $04

; Ajout du header K7
TAPE_HEADER(AUTOEXEC, TAPE_TITLE)
 
; Adresse de début du programme
 * = $1000

start:
    ; programme
    ...
    ...

end:

Sinon, j'ai commencé par utiliser xa pour mes devs et il m'arrive de l'utiliser encore de temps en temps pour des trucs simples, mais j'ai fini par passer à ca65 parce que je trouve les macros de xa assez limitées pour certaines choses comme l'a dit jede.
Les macros de xa sont l'équivalent des #define du C et si je trouve que c'est suffisant pour du C, je trouve que ça ne l'est pas pour de l'assembleur (en tout cas en ce qui me concerne).

C'est aussi ces fonctionalités qui font que ca65 est un peu plus compliqué à appréhender que xa.

Je conseille de commencer avec xa et de passer ensuite à ca65 si besoin, mais c'est aussi une question d'habitude.
assinie
assinie

Messages : 242
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par ]0[v] le Mar 6 Aoû 2019 - 10:48

@assinie : merci, j'aime bien l'idée de la macro pour intégrer le header. Et pour l'instant je vais continuer avec XA j'aime bien sa syntaxe et il est suffisant pour ce que j'ai besoin de faire.

tu ne précèdes pas l'adresse de début de programme par '.text' ?
]0[v]
]0[v]

Messages : 30
Date d'inscription : 25/07/2019

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par assinie le Mar 6 Aoû 2019 - 19:43

Tu as raison pour le .text.

En fait, avec xa je n'utilise que rarement les différents segments.
A mon sens, c'est surtout valable et utile si on utilise le format "relogeable" des fichiers .o65 (option -R de xa).
D'un autre côté, utiliser les segments est probablement une bonne habitude à prendre.
assinie
assinie

Messages : 242
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par Ladywasky le Mer 7 Aoû 2019 - 0:08

Il y a deux ressources sur lesquelles je me penche actuellement pour apprendre en douceur l'assembleur pour 6502A.

Ce site :
http://skilldrick.github.io/easy6502/

Et ce bouquin :
https://drive.google.com/file/d/0Bxv0SsvibDMTcHNXalEtYkVtU00/view
Ladywasky
Ladywasky

Messages : 208
Date d'inscription : 25/08/2018
Age : 49

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par Dbug le Mer 7 Aoû 2019 - 17:38

assinie a écrit:En fait, avec xa je n'utilise que rarement les différents segments.
A mon sens, c'est surtout valable et utile si on utilise le format "relogeable" des fichiers .o65 (option -R de xa).
Les segments servent meme en mode non relogeable.

En gros tous les assembleurs corrects regroupent le contenu des segments trouvés dans les différents fichiers, donc si tu a trois fichiers a.s, b.s, c.s, chacun avec un ".zero" et un ".text" l'executable final aura un seule section page zero et une seule section text, chacune avec une adresse de départ configurable, avec tous les symboles bien proprement alloués.

Par dessus ca, j'utilise souvent la section .bss mappée sur la ram overlay pour tout ce qui est mémoire allouée (tables, buffers de chargement, etc...) ca permet d'avoir des adresses générées correctement sans avoir plein de 00000000000000000000 sauvés.

Pour ce qui est des macros de XA, je vous trouve tous bien méchant Smile Ca supporte les paramètres, plusieurs instructions par ligne, et avec "\" on peut même faire des macros longues avec une instruction par ligne.

_________________

Dbug
Dbug

Messages : 182
Date d'inscription : 06/01/2013

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par ]0[v] le Jeu 8 Aoû 2019 - 11:03

@LadyVasky : Easy6502, c'est déjà très bien pour apprendre et son deuxième intérêt c'est de pouvoir assembler du code et fournir le dump hexa, du coup avec un petit script bash on creer facilement un loader basic Smile
L'autre livre excellent voire indispensable c'est "6502" de Lance LEVANTHAL

@Dbug : pour mapper le .bss sur la RAM Overlay, tu t'en sers dans quel cas? Car pour activer l'activer c'est une extension externe qui desactive via le signal !ROMDIS l'accés à la ROM interne, non? En tout cas ça semble pratique.
Pourrais tu donner un example de macro avec XA justement, je l'aime bien aussi sa syntaxe à cet assembleur

@Assinie : concernant la partie "trame de synchro" pour l'enregistrement de type .tap, dans le livre "codigo maquina" on peut lire qu'il faut 259 bytes à 16h pour assurer la synchronisation sur le premier bit. Même chose dans le livre "oric atmos and oric code techniques" et finalement dans le livre "l'oric a nu" là il en faut seulement 9 puis suivit bien sûr de 24h. Dans l'example que tu donne il n'y en a que 4. Donc la question que je me pose c'est est ce que de par ton expérience cela suffit, y-a-t-il une raison technique particulière?... je veux pas faire mon pénible c'est juste pour bien comprendre la raison technique geek


]0[v]
]0[v]

Messages : 30
Date d'inscription : 25/07/2019

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par Dbug le Jeu 8 Aoû 2019 - 11:29

\" a écrit:@Dbug : pour mapper le .bss sur la RAM Overlay, tu t'en sers dans quel cas? Car pour activer l'activer c'est une extension externe qui desactive via le signal !ROMDIS l'accés à la ROM interne, non? En tout cas ça semble pratique.
C'est juste dans l'exécutable, juste une facilité pour définir des zones dans la mémoire entre C000 et FFFF sans que ca ne soit sauvé physiquement sur disque.

Typiquement dans certains de mes sources ca serait structuré comme ca:

"player.s"
Code:

   .zero
; Tout  ca est en page zéro
_DecodedByte      .dsb 1      ; Byte being currently decoded from the MYM stream
_DecodeBitCounter   .dsb 1      ; Number of bits we can read in the current byte
_DecodedResult      .dsb 1      ; What is returned by the 'read bits' function
(...)

   .text
; Tout ca est dans le fichier physique sauvé sur disque
_PlayerCount      .byt 0
_PlayerRegValues      
_RegisterChanAFrequency
   ; Chanel A Frequency
   .byt 8
   .byt 4

_MusicData
#include "music.s"
   
   .bss
; Tout ca est dans la section "Bloc Storage Section" donc "virtuelle", ca ne fait pas partie du fichier
; donc il faut bien effacer le contenu, sinon on ne sait pas ce qu'il y a dedans   
   * = $c000
   
_PlayerBuffer      .dsb 256*14         ; About 3.5 kilobytes in overlay memory
_Buffer2                    .dsb 128
_Truc                        .dsb 128

   .text
; Et on repasse en .text a la fin pour éviter les surprises si on a plusieurs fichiers qui s'incluent les uns les autres
Pas vraiment compliqué Smile

\" a écrit:Pourrais tu donner un example de macro avec XA justement, je l'aime bien aussi sa syntaxe à cet assembleur
Petite rechercher rapide dans les programmes sur le dépot SVN:

#define VIA_1 $30f
---------------------
#define ENTRY(type,score,name) .word (score+32768) : .byt type : .asc name
---------------------
#ifdef USE_VSYNC_AUTO_TEXT
#define A_50HZ A_TEXT50
#define A_60HZ A_TEXT60
#define line_adr(x) $bb80+(5*x)
#else
#define A_50HZ A_HIRES50
#define A_60HZ A_HIRES60
#define line_adr(x) $a000+(40*x)
#endif
---------------------
#define BLIT(column) lda _Buffer0+96*column,x : sta $b500+48*column,x : lda _Buffer0+48+96*column,x : sta $b900+48*column,x
---------------------
#define PRINT_TEXT(x,y,message) \
:.( \
:lda #<$a000+x+40*y \
:sta tmp1+0 \
:lda #>$a000+x+40*y \
:sta tmp1+1 \
:lda # :sta __TextFetch+1 \
:lda #>message_data \
:sta __TextFetch+2 \
:jmp continue \
:message_data \
:.byt message \
:.byt 0 \
:continue \
:jsr _HiresDoublePrintOut \
:.)
---------------------
#define ROAD(position) :clc \
:lda _RoadMiddleTableHigh+position \
:adc #120-(100*position)/128 \
:tay \
:lda _Mod6Left,y \
:ldx _TableDiv6,y \
:sta $a000+0+40*72+40*position+1,x \
:lda #64 \
:sta $a000+0+40*72+40*position+0,x \
:lda #64+63 \
:sta $a000+0+40*72+40*position+2,x \
:clc \
:lda _RoadMiddleTableHigh+position \
:adc #120+(100*position)/128 \
:tay \
:lda _Mod6Right,y \
:ldx _TableDiv6,y \
:sta $a000+0+40*72+40*position+1,x \
:lda #64+63 \
:sta $a000+0+40*72+40*position+0,x \
:lda #64 \
:sta $a000+0+40*72+40*position+2,x
---------------------
#define RASTER(position) :clc \
:lda #(4096/(position+16)>>2) \
:adc _Position \
:tax \
:lda _Raster1,x \
:sta $a000+1+40*72+40*position \
:lda _GroundRaster+position/2,y \
:sta $a000+0+40*72+40*position \
---------------------

_________________

Dbug
Dbug

Messages : 182
Date d'inscription : 06/01/2013

Revenir en haut Aller en bas

Apprendre l'Assembleur ORIC Empty Re: Apprendre l'Assembleur ORIC

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Revenir en haut

- Sujets similaires

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