Forum Oric
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
» Bla Bla général du Jury
Problème sur mix BASIC / ASM EmptyJeu 21 Mar 2024 - 8:51 par Dom50

» carte mère Oric (re)tracée
Problème sur mix BASIC / ASM EmptyMar 5 Mar 2024 - 18:54 par kenneth

» Meurtre à Grande Vitesse
Problème sur mix BASIC / ASM EmptyDim 25 Fév 2024 - 5:09 par Iurius

» ORIC-1 sur LE BON COIN
Problème sur mix BASIC / ASM EmptyVen 23 Fév 2024 - 23:01 par Mcar

» ORIC ATMOS sur LE BON COIN
Problème sur mix BASIC / ASM EmptyDim 4 Fév 2024 - 12:06 par kiwilevrai

» Problème d'affichage des couleurs avec un Oric Atmos
Problème sur mix BASIC / ASM EmptySam 27 Jan 2024 - 1:26 par pierbail

» Bienvenue dans le Forum des Oriciens
Problème sur mix BASIC / ASM EmptyMar 9 Jan 2024 - 12:33 par Dom50

» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
Problème sur mix BASIC / ASM EmptyVen 29 Déc 2023 - 14:13 par Arcade-des-Monts

» Bonnes fêtes
Problème sur mix BASIC / ASM EmptyMar 26 Déc 2023 - 10:21 par Dom50

» Murders in Venice / Meutres à Venise
Problème sur mix BASIC / ASM EmptySam 18 Nov 2023 - 22:44 par retroric

» Un clavier PS/2 pour tester un ORIC
Problème sur mix BASIC / ASM EmptyDim 27 Aoû 2023 - 9:49 par Voyageur

» Disquette 3" Sedoric
Problème sur mix BASIC / ASM EmptyMar 1 Aoû 2023 - 14:22 par AtomeX

» faire un 6502 avec des phototransistor
Problème sur mix BASIC / ASM EmptyDim 16 Juil 2023 - 17:26 par Voyageur

» Oricutron linux et DSK
Problème sur mix BASIC / ASM EmptyJeu 29 Juin 2023 - 18:34 par Voyageur

» No Problem !
Problème sur mix BASIC / ASM EmptyDim 25 Juin 2023 - 17:53 par Voyageur

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

Récupérer mon mot de passe

Statistiques
Nous avons 241 membres enregistrés
L'utilisateur enregistré le plus récent est ben_frog

Nos membres ont posté un total de 8921 messages dans 811 sujets
Sites Sympas

> Culture Club


-23%
Le deal à ne pas rater :
EVGA SuperNOVA 650 G6 – Alimentation PC 100% modulaire 650W, 80+ ...
77.91 € 100.91 €
Voir le deal

Problème sur mix BASIC / ASM

3 participants

Aller en bas

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

Message par jbperin 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 : 132
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 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 : 132
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 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 : 53

Revenir en haut Aller en bas

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

Message par Symoon 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 : 779
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 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 : 53

Revenir en haut Aller en bas

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

Message par jbperin 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 : 132
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 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 : 53

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