Derniers sujets
» Listings de l'ORIC-1 Manual
Problème sur mix BASIC / ASM EmptyAujourd'hui à 14:56 par Ladywasky

» le retour du Commodore 64
Problème sur mix BASIC / ASM EmptyHier à 1:55 par jbperin

» Type in Master Mind
Problème sur mix BASIC / ASM EmptyJeu 5 Déc 2019 - 14:53 par Ladywasky

» Pictoric
Problème sur mix BASIC / ASM EmptyMer 4 Déc 2019 - 12:02 par Sheld67

» Nouveau site ceo.oric.org
Problème sur mix BASIC / ASM EmptyMar 3 Déc 2019 - 5:08 par didierv

» Bocco's adventures - nouveau jeu pour Oric
Problème sur mix BASIC / ASM EmptyMar 3 Déc 2019 - 0:08 par retroric

» Problème avec les boucles
Problème sur mix BASIC / ASM EmptyLun 2 Déc 2019 - 13:43 par TotoShampoin

» Nouvel ancien jeu: Oric Golf par K. Smith
Problème sur mix BASIC / ASM EmptyDim 1 Déc 2019 - 12:19 par Symoon

» Aux couleurs de l'Atmos
Problème sur mix BASIC / ASM EmptyDim 1 Déc 2019 - 11:52 par Dom50

» ORIC-1 sur LE BON COIN
Problème sur mix BASIC / ASM EmptyVen 29 Nov 2019 - 21:15 par didierv

» recherche racine carrée 32 bits (et arctangente 16 bits) [RESOLU !! ]
Problème sur mix BASIC / ASM EmptyVen 29 Nov 2019 - 9:43 par jbperin

» une atan2 pour vos lib math
Problème sur mix BASIC / ASM EmptyJeu 28 Nov 2019 - 21:19 par jbperin

» Materiels Oric pour membres du CEO
Problème sur mix BASIC / ASM EmptyMer 27 Nov 2019 - 14:38 par jbperin

» I had a dream .. glOric
Problème sur mix BASIC / ASM EmptyMer 27 Nov 2019 - 1:01 par retroric

» CEO-MAG 355
Problème sur mix BASIC / ASM EmptyMar 26 Nov 2019 - 23:19 par retroric

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

Nos membres ont posté un total de 8298 messages dans 716 sujets
Portail ORIC



Le deal à ne pas rater :
Apple iPad 10.2 (2019) 32Go Wifi – Gris sidéral
270 €
Voir le deal

Problème sur mix BASIC / ASM

Aller en bas

Problème sur mix BASIC / ASM Empty Problème sur mix BASIC / ASM

Message par jbperin le Lun 11 Nov 2019 - 16:57

Bonjour à tous,

Je n'arrive pas mélanger BASIC et ASM.

Je pars de deux déclarations assembleur suivante (une zone data à $8000 et une routine stockée à $9000) que je mets dans le fichier glOric.s:

Code:

*=$8000                            ; Adresse data

CamPosX: .word $1234

*=$9000                             ; Adresse de debut des problèmes
project:
.(
 nop
.)
 rts

Que j'essaie d'appeler depuis le programme BASIC suivant nommé main.bas:

Code:
10 LET ADRBASE = # 8000
20 V = DEEK (ADRBASE)
30 PRINT "V = ";V
40 CALL #9000
40 PRINT "FIN"

Je configure ODSK avec les paramètres suivant dans le fichier osdk_config.bat

Code:
::
:: Set the build paremeters
::
SET OSDKADDR=$500
SET OSDKNAME=glOric
SET OSDKFILE=glOric main
SET OSDKDISK=

Et à l'exécution, si j'exécute le .TAP .. la variable est affiché à 21845 et j'ai un crash sur l'appel à CALL # 9000
Si j'éxécute le .DSK .. rien ne se passe un DEEK à # 8000 m'affiche aussi 21845

C'est comme si le code assembleur n'était pas chargé dans le TAP ou le SDK ..

Merci d'avance à toute personne qui pourra m'aider ?

jbperin
jbperin

Messages : 58
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Problème sur mix BASIC / ASM Empty Re: Problème sur mix BASIC / ASM

Message par jbperin le Lun 11 Nov 2019 - 20:37

Bon ben finalement je vais utiliser le C pour tester les routines assembleur.

C'est beaucoup plus facile.

Mais quand même, à l'occas, si qqu'un peut me dire comment on fait une TAP ou un DSK avec des routines écrites en C/ASM qui sont lancées par un script BASIC. Je suis bien intéressé.
jbperin
jbperin

Messages : 58
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Problème sur mix BASIC / ASM Empty Re: Problème sur mix BASIC / ASM

Message par Ladywasky le Sam 16 Nov 2019 - 4:31

jbperin a écrit:
Mais quand même, à l'occas, si qqu'un peut me dire comment on fait une TAP ou un DSK avec des routines écrites en C/ASM qui sont lancées par un script BASIC. Je suis bien intéressé.

Bah on va faire ça avec Oric Kong pour le fichier tap :
https://github.com/DJChloe/Orickong_C

Dans le répertoire source....
https://github.com/DJChloe/Orickong_C/tree/master/src
...tu as tout les "morceaux" de la cassette, c'est à dire
La cassette (fichier tap) d'Oric Kong contient :
- Un programme Basic (Le loader), qui est au tout début de la cassette et va charger tout le reste.
- Un écran de présentation (des données destinées à la mémoire écran, en Hires)
- Le programme de jeu en C, qui en lui même, une fois compilée est une routine assembleur, et qui contient des fonctions écrites en assembleur qu'on peu appeler depuis le programme en C

Pour construire tous les éléments de la cassette, les uns après les autres et les assembler (je fais ça avec mon outil taptap qui est un couteau suisse du fichier tap), c'est ce fichier batch
https://github.com/DJChloe/Orickong_C/blob/master/src/make_all.bat

Pour info, taptap, c'est là :
https://github.com/DJChloe/taptap

revenons à make.all :
Bah normalement, il ne devrait pas trop te donner de soucis à comprendre. Grosso modo, il lance la fabrication de plusieurs fichiers tap : un pour le loader, un pour l'écran titre, un pour la routine assembleur. Puis il met tout bout à bout dans un seul fichier.
(Tu remarqueras que j'ai mis l'autostart du programme en C/assembleur sur Off, pour le charger gentiment depuis le BASIC puis le lancer avec un CALL. Par défaut, l'OSDK te met l'autostart sur ON comme si tu avais fait un CSAVE "monprog", AUTO.

En fait, tu ne peux pas faire du BASIC plus de l'assembleur en un seul tenant (ou bien alors avec les Data dans le BASIC, ou bien encore en chargeant le BASIC, la routine assembleur, puis en sauvant toute la zone mémoire qui contient BASIC et assembleur comme fait dans Tyrann mais beurk).

Bon, pour le BASIC, tu as plusieurs CLOAD, et le CALL #600 qui lance le programme C
Le CALL#F8D0, c'est juste une sous routine déjà présente dans l'ATMOS qui réinitialise les caractères tout propres comme avant que tu les aient redéfini.

Le programme en C (main), lui sera sur le fichier tap, avec pour indication en entête sur le fichier tap, de le charger en #600 (Le Loader BASIC commence en #500 comme pour tous les programmes en BASIC, et il se termine en #580 ou un truc comme ça, il est pas bien gros avec ses 3 lignes).
Si tu regarde le fichier de configuration pour le compiler :
https://github.com/DJChloe/Orickong_C/blob/master/src/Main/osdk_config.bat

Tu verras cette ligne là : SET OSDKADDR=$600
Ca sert à placer en en-tête du fichier cassette l'adresse ou l'Oric va charger ta routine C/assembleur avec un CLOAD"".

Alors bon, là il a plein de fichier Batch pour chaque programmes, c'est parque je construis en même temps une version du jeux en français, et une en Anglais. Bref, d'un fichier Batch _fr à un fichier batch _en, il n'y a pas de différence autres que les textes et, petite subtilité, des caractères accentuées pour la version française.

Tu n'as plus qu'à décortiquer tout ça pour bien comprendre.

Pour les fichiers DSK et le .s --> .tap, je te conseille de jeter un oeil au projet de musique :
https://github.com/DJChloe/Very-cool-music et son répertoire source et notemment le fichier osdk_build.bat
qui parle de lui même :
1) La construction du programme principal (qui donne un fichier tap même si là ça ne se voit pas trop)
CALL %OSDK%\bin\make.bat %OSDKFILE%
2) Le fichier .s compilé en .o (fichier Oric sans en-tête), puis construction d'un en-tête devant le .o pour donner un .tap (c'est le lecteur de musique)
%osdk%\bin\xa mymplayer.s -o build\mymplayer.o
%OSDK%\bin\header -h1 -a0 build\mymplayer.o build\mymplayer.tap $3500
3) Les données de la musique mise dans un .tap :
SET YM2MYM=%osdk%\Bin\ym2mym.exe -h1 -m18872
%YM2MYM% "data\cool.ym" build\cool.tap                     $4600 "MusicB"
4) La construction de la disquette en mettant les fichiers tap bout à bout et la commande en BASIC SEDORIC du lancement du programme principal sur le DSK (CLS:TEST):
%OSDK%\bin\tap2dsk -iCLS:TEST build\%OSDKNAME%.TAP build\mymplayer.tap build\cool.tap build\%OSDKNAME%.dsk
%OSDK%\bin\old2mfm build\%OSDKNAME%.dsk

Si tu as mal au crâne, c'est normal, j'ai fais court, mais vraiment au mieux, crois moi !!!
Bon courage !
Ladywasky
Ladywasky

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

Revenir en haut Aller en bas

Problème sur mix BASIC / ASM Empty Re: Problème sur mix BASIC / ASM

Message par Symoon le Sam 16 Nov 2019 - 8:13

Attention Chloé, Oric Kong 2019 ne se charge pas automatiquement sur ROM 1.0 : tu tombes sur le bug du retour au ready après le chargement d'un écran HIRES.

La solution était d'ajouter un RTS en $9FFF et sauver l'écran HIRES en AUTO (à partir de $9FFF of course).
Symoon
Symoon

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

Revenir en haut Aller en bas

Problème sur mix BASIC / ASM Empty Re: Problème sur mix BASIC / ASM

Message par Ladywasky le Sam 16 Nov 2019 - 15:06

Symoon a écrit:Attention Chloé, Oric Kong 2019 ne se charge pas automatiquement sur ROM 1.0 : tu tombes sur le bug du retour au ready après le chargement d'un écran HIRES.

La solution était d'ajouter un RTS en $9FFF et sauver l'écran HIRES en AUTO (à partir de $9FFF of course).

L'Oric Atmos est est en ROM v1.1 (il me semble), j'ai toujours précisé que je l'avais développé pour Atmos, et précisemment parce que je connais très mal les subtilités de la ROM v1.0 et celle de l'Oric 1.
Le code source est disponible sur Github, c'est fait pour s'en servir et si des motivés veulent faire des versions pour la 1.0, bah c'est fait pour !!!

Loin de moi d'être une pointure en matière d'Oric, hou la.
Je fais des découvertes, j'arrive à faire des trucs que du coup je partage mais ça ne fait pas de moi quelqu'un qui va faire dans l'exhaustif, parce que je ne maîtrise pas tout.

Déjà, en assembleur, j'ai beaucoup de progrès à faire par exemple.
Ladywasky
Ladywasky

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

Revenir en haut Aller en bas

Problème sur mix BASIC / ASM Empty Re: Problème sur mix BASIC / ASM

Message par jbperin le Lun 18 Nov 2019 - 17:30

Ladywasky a écrit:
Bah on va faire ça avec Oric Kong pour le fichier tap :
https://github.com/DJChloe/Orickong_C

Super bon exemple merci !!

Ladywasky a écrit:
Pour info, taptap, c'est là :
https://github.com/DJChloe/taptap

Est-il différent du taptap qui est fourni avec OSDK ?
Je vois que dans le script https://github.com/DJChloe/Orickong_C/blob/master/src/make_all.bat tu utilises deux versions différentes de taptap.. l'une semble provenir de OSDK et tu l'utilises avec la commande join (que je n'ai pas trouvé dans l'aide taptap) .. l'autre semble provenir de ton répertoire Tools et tu l'utilises pour les commandes autooff et cat

Ladywasky a écrit:
Tu n'as plus qu'à décortiquer tout ça pour bien comprendre.

Oui je n'ai plus qu'à éplucher tout ça .. et tes explications vont m'être bien précieuses .. alors merci énormément. C'est super sympa de ta part. Wink
jbperin
jbperin

Messages : 58
Date d'inscription : 05/11/2019
Localisation : Drôme

Revenir en haut Aller en bas

Problème sur mix BASIC / ASM Empty Re: Problème sur mix BASIC / ASM

Message par Ladywasky le Mar 19 Nov 2019 - 18:59

La version mise à jour est sur mon github.

Celui que j'utilise avec join est une coquille de ma part.
pour avoir l'aide :
Code:
c:> taptap /?

Ladywasky
Ladywasky

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

Revenir en haut Aller en bas

Problème sur mix BASIC / ASM Empty Re: Problème sur mix BASIC / ASM

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