Derniers sujets
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
Statistiques
Nous avons 241 membres enregistrésL'utilisateur enregistré le plus récent est ben_frog
Nos membres ont posté un total de 8921 messages dans 811 sujets
Problème sur mix BASIC / ASM
3 participants
Forum Oric :: Forums :: Forum Public :: Assembleur
Page 1 sur 1
Problème sur mix BASIC / ASM
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:
Que j'essaie d'appeler depuis le programme BASIC suivant nommé main.bas:
Je configure ODSK avec les paramètres suivant dans le fichier osdk_config.bat
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 ?
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- Messages : 132
Date d'inscription : 05/11/2019
Localisation : Drôme
Re: Problème sur mix BASIC / ASM
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é.
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- Messages : 132
Date d'inscription : 05/11/2019
Localisation : Drôme
Re: Problème sur mix BASIC / ASM
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- Messages : 240
Date d'inscription : 25/08/2018
Age : 53
Re: Problème sur mix BASIC / ASM
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).
La solution était d'ajouter un RTS en $9FFF et sauver l'écran HIRES en AUTO (à partir de $9FFF of course).
Symoon- Messages : 779
Date d'inscription : 26/04/2014
Re: Problème sur mix BASIC / ASM
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- Messages : 240
Date d'inscription : 25/08/2018
Age : 53
Re: Problème sur mix BASIC / ASM
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 !!
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.
jbperin- Messages : 132
Date d'inscription : 05/11/2019
Localisation : Drôme
Re: Problème sur mix BASIC / ASM
La version mise à jour est sur mon github.
Celui que j'utilise avec join est une coquille de ma part.
pour avoir l'aide :
Celui que j'utilise avec join est une coquille de ma part.
pour avoir l'aide :
- Code:
c:> taptap /?
Ladywasky- Messages : 240
Date d'inscription : 25/08/2018
Age : 53
Sujets similaires
» Problème d'horloge
» [sujet Public] - le Ceo-Mag
» Problème avec dxa
» Problème avec les boucles
» problème de compilation c OSDK 1.14
» [sujet Public] - le Ceo-Mag
» Problème avec dxa
» Problème avec les boucles
» problème de compilation c OSDK 1.14
Forum Oric :: Forums :: Forum Public :: Assembleur
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Jeu 21 Mar 2024 - 8:51 par Dom50
» carte mère Oric (re)tracée
Mar 5 Mar 2024 - 18:54 par kenneth
» Meurtre à Grande Vitesse
Dim 25 Fév 2024 - 5:09 par Iurius
» ORIC-1 sur LE BON COIN
Ven 23 Fév 2024 - 23:01 par Mcar
» ORIC ATMOS sur LE BON COIN
Dim 4 Fév 2024 - 12:06 par kiwilevrai
» Problème d'affichage des couleurs avec un Oric Atmos
Sam 27 Jan 2024 - 1:26 par pierbail
» Bienvenue dans le Forum des Oriciens
Mar 9 Jan 2024 - 12:33 par Dom50
» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
Ven 29 Déc 2023 - 14:13 par Arcade-des-Monts
» Bonnes fêtes
Mar 26 Déc 2023 - 10:21 par Dom50
» Murders in Venice / Meutres à Venise
Sam 18 Nov 2023 - 22:44 par retroric
» Un clavier PS/2 pour tester un ORIC
Dim 27 Aoû 2023 - 9:49 par Voyageur
» Disquette 3" Sedoric
Mar 1 Aoû 2023 - 14:22 par AtomeX
» faire un 6502 avec des phototransistor
Dim 16 Juil 2023 - 17:26 par Voyageur
» Oricutron linux et DSK
Jeu 29 Juin 2023 - 18:34 par Voyageur
» No Problem !
Dim 25 Juin 2023 - 17:53 par Voyageur