Derniers sujets
» Multi soluces...
Problème sur mix BASIC / ASM EmptyMar 19 Mai 2020 - 12:41 par soft-bug

» Des nouvelles de BAS_ORIC
Problème sur mix BASIC / ASM EmptyMer 6 Mai 2020 - 16:08 par goyo

» 3D walkthrough template en moins de 600 lignes de C
Problème sur mix BASIC / ASM EmptyMer 29 Avr 2020 - 20:43 par Star42

» CB2 micro
Problème sur mix BASIC / ASM EmptySam 11 Avr 2020 - 19:29 par jbperin

» Le bonjour de codeur
Problème sur mix BASIC / ASM EmptyMer 1 Avr 2020 - 15:18 par Invité

» [résolu] Format des fichiers Hyperbasic...
Problème sur mix BASIC / ASM EmptySam 28 Mar 2020 - 19:50 par damien

» [résolu] Récupération contenu disquettes 3 pouces...
Problème sur mix BASIC / ASM EmptyVen 27 Mar 2020 - 15:06 par damien

» Echange de jeux/logiciels
Problème sur mix BASIC / ASM EmptyLun 23 Mar 2020 - 20:15 par Star42

» Ordi Portable Sony VAIO
Problème sur mix BASIC / ASM EmptyDim 22 Mar 2020 - 16:17 par froggy

» une atan2 pour vos lib math
Problème sur mix BASIC / ASM EmptyDim 22 Mar 2020 - 11:30 par drpsy

» nouveau site
Problème sur mix BASIC / ASM EmptyJeu 19 Mar 2020 - 20:02 par Star42

» CEO Mag Spéciaux disponibles
Problème sur mix BASIC / ASM EmptyJeu 19 Mar 2020 - 9:33 par musepat

» Oric Explorer v2.0
Problème sur mix BASIC / ASM EmptyMer 18 Mar 2020 - 9:47 par damien

» Flappy Oric 3D
Problème sur mix BASIC / ASM EmptyMar 17 Mar 2020 - 7:50 par jbperin

» Cherche solution pour le jeu 007 A View To A Kill / Dangereusement Vôtre
Problème sur mix BASIC / ASM EmptySam 14 Mar 2020 - 16:14 par retroric

Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 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 208 membres enregistrés
L'utilisateur enregistré le plus récent est darq

Nos membres ont posté un total de 8564 messages dans 744 sujets
Portail ORIC



-69%
Le deal à ne pas rater :
Abonnement annuel à Cdiscount à Volonté à 9€ au lieu de 29€
9 € 29 €
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 : 113
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 : 113
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 : 240
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 : 775
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 : 240
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 : 113
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 : 240
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