Amstrad Plus Index du Forum

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

rom et port cartouche
Aller à la page: <  1, 2
 
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation
Sujet précédent :: Sujet suivant  
Auteur Message
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Mer 1 Juil - 18:41 (2015)    Sujet du message: rom et port cartouche Répondre en citant

Je te l'avais dit... Winape ne gère pas bien les roms. Ce n'est pas un vrai Cpc, donc pas le même comportement 
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Publicité






MessagePosté le: Mer 1 Juil - 18:41 (2015)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
xtrabet


Hors ligne

Inscrit le: 19 Juin 2015
Messages: 30

MessagePosté le: Jeu 2 Juil - 12:57 (2015)    Sujet du message: rom et port cartouche Répondre en citant

je suis d'accord Ast, mais sur ce coup c'est bon : ca marche dans les 2 cas  Wink

Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Jeu 2 Juil - 14:09 (2015)    Sujet du message: rom et port cartouche Répondre en citant

T as fait quoi pour que ça fonctionne ?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
xtrabet


Hors ligne

Inscrit le: 19 Juin 2015
Messages: 30

MessagePosté le: Jeu 2 Juil - 15:21 (2015)    Sujet du message: rom et port cartouche Répondre en citant

rien du tout, j'ai juste testé et ça a marché.
Pourquoi tu l'as testé et elle ne fonctionne pas?


Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Jeu 2 Juil - 15:56 (2015)    Sujet du message: rom et port cartouche Répondre en citant

Non, pas encore. Peux-tu nous faire un petit tuto avec l'explication de ce que tu as fais. Cela pourrait servir à plusieurs personne qui n'ont pas de RamCard, ou extensions Roms....


Merci.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
xtrabet


Hors ligne

Inscrit le: 19 Juin 2015
Messages: 30

MessagePosté le: Jeu 2 Juil - 16:20 (2015)    Sujet du message: rom et port cartouche Répondre en citant

oui bonne idée je te ferais ca

Revenir en haut
xtrabet


Hors ligne

Inscrit le: 19 Juin 2015
Messages: 30

MessagePosté le: Ven 3 Juil - 15:19 (2015)    Sujet du message: rom et port cartouche Répondre en citant

Allez le tuto du comment on se fait une cartouche avec un menu, qui nous permet d'appeler une ROM qui a besoin d'accès disquette et donc d'amsdos ou parados (ouf c'est long à dire).



Tout d'abord un rappel :

L'OS initialise les ports logique des roms de 15 à 0.
Pour une cartouche, le premier bloc de 16ko qui sera appelé par le syteme correspond au port physique &83 qui est affecté en port logique 7.
C'est sur ce port physique qu'habituellement on retrouve l'amsdos pour etre compatible notamment avec les cpc old (si vous n'avez pas besoin de support disquette, vous pouvez mettre votre rom perso directement sur ce port physique et ce tuto ne vous sert à rien ^^).


on va donc prendre la rom amsdos ou mieux parados, et la patcher de telle sorte qu'elle appelle notre rom perso.

Une rom a une structure particulière notamment si l'on souhaite l'utiliser à l'aide de commande RSX (vous savez les |, ù suivi d'une commande en basic) . Je ne vais pas rentrer dans les détails des roms mais ici je ne parlerais que de rom dite « hautes » et donc se logeant lorsque nous les « branchons » à l'adresse &C000-&FFFF (pour plus d'infos vous trouverez votre bonheur sur quasar.net http://quasar.cpcscene.net/doku.php?id=dossier:roms ou la cpcrulez http://cpcrulez.fr/coding_creation_d_une_ROM_sur_CPC-masterglob.htm)


La parados n'y fait pas exception et on a donc la routine d'initialisation de celle-ci qui se trouve en &C006 qui est appelé par l'OS au démarrage.
L'astuce est donc juste avant la sortie de la routine d'init d'insérer notre code qui va appeler notre rom perso.

Je prends un petit editeur hexa qui va bien, Bless Hex Editor sous linux ( Embarassed ) ou Hxd qui est très bon aussi et gratuit sous windows.
Donc en &C006 on a un Jump vers &C1BC et donc avant le RET (&C9) de la routine on va avoir besoin d'insérer 3 octets pour glisser un jump &FFF0 (on se prend quelques octets de libre à cet endroit pour notre code).

Je choisis de placer le saut en &C1D8 (C3 F0 FF). Le code ecrasé par mes octets est FD E1 37 (POP IY, SCF) que je place en &FFF0.

Ensuite on branche notre rom perso pour l'appeler on a donc :
FFF0 : POP IY ------------------FD 31
FFF2 : SCF --------------------- 37 set carry flag
FFF3 : RST #18 --------------- DF on connecte la rom et on appelle la routine dont les parametres sont indiqués à &FFFA
FFF4 : DB #FA,#FF ------------FA F0

' comme le retour au basic n'est pas encore fonctionnel je passe les octets suivant….jusqu'à :

FFFA : DW #C009 --------------- 00 C0 adresse de la routine (dans notre exemple c'est une rom sans entete, mais vous auriez pu appeler directement une RSX, la 1ere est en &C009)
FFFC : DB #88 ------------------ 88 port physique de la cartouche

donc ma rom perso où je vais mettre un menu au démarrage : je la positionne en &88. Pourquoi ? Parce que sur ma cartouche de test tous les autres sont déjà pris !

Explications :
port cartouche ------------- port logique ------------- rom

80 --------------------------- 0 ------------------------- OS6128
81 --------------------------- 1 ------------------------- BASIC1.1
82 --------------------------- na ------------------------ ? Burnin rubber ?
83 --------------------------- 7 ------------------------- PARADOS 1.1
84 --------------------------- na ------------------------ Burnin rubber
85 --------------------------- na ------------------------ Burnin rubber
86 --------------------------- na ------------------------ Burnin rubber
87 --------------------------- na ------------------------ Burnin rubber
88 --------------------------- na ------------------------ woohoo on se met là !
89 --------------------------- na ------------------------ vide (pas pour longtemps)
8a --------------------------- na ------------------------ vide
... ---------------------------- na ----------------------- ...
9f ---------------------------- na ------------------------vide


Donc qu'est-ce qu'on se met en &88 ?
ben un petit menu qui va bien tiens (les infos sont là : cpcrulez kit cpr http://cpcrulez.fr/coding-kit-cpr.htm vous y trouverez les banks de burning rubber)

alors en &C034 à &C03E on a le test sur les touches f1 a f3 de notre menu avec le renvoi au code qui appelle notre rom qui va bien (le basic, burning rubber, ma rom perso----il ne s'agit pas de mon menu cette fois mais ma rom sur laquelle je veux me brancher depuis le début bien sur!----).

En C04E vous avez jusqu'en C09E (qui se termine par 00) le menu qui s'affiche.
On y trouve quelques caractères de contrôle pour positionner le curseur (un locate quoi…&1F &07 &0B) puis on attaque :
-bon la première ligne c'est le nombre de caractères horizontaux avec les coins (&96 et &9C) pour le trait.
-Ensuite on retrouve un 1F 07 0C (notez 0C pour la ligne en dessous).
-Un trait vertical (&95) et f1 Amstrad Basic et trait vertical (&95)
-Locate en dessus 1F 07 0D, avec burnin rubber
on insère donc notre menu sur le même principe.


Enfin nos sous routines d'appels :
C0B1 : RST #18 DF on connecte la rom et on appelle la routine dont les paramètres sont indiqués à &C0BB
C0B2 : DB #BB,#CC BB C0
et en
C0BB : DW #C009 09 C0 adresse de la routine (dans notre exemple c'est GOS la rsx ùgos est en &C009)
FFFC : DB #89 89 port physique de la cartouche

Bon on est pas mal là, on a notre parados patchée.
On a notre rom perso à nous pour le menu,
et une rom qui aime les accès disques prête, sans l'avoir touchée bidouillée manipulée, bref clean la miss rom.


On se fait le fichier cartouche cpr
Le plus simple est de se rendre sur le site www.grimware.org/tools/cpr.builder.php
vous posez vos roms :
0 os (firmware)
1 basic
2 brb
3 parados1.1 modifiées par ce tutoriel
4,5,6,7 les banks burnin'rubber
8 notre rom menu
9 notre rom qu'on aime utiliser
Et hop vous validez et récupérez votre .CPR qui va bien.


Ah au fait, petit rappel sur le format du fichier cpr, ca peut faire gagner du temps, parce que le temps…. !
1-On a donc une entête de 14 octets,
2-suivis des rom de 16k qui commencent par une entête elle aussi de 8 octets :
3-cbxx où xx est le numéro de bank de 00 à 31.
4-suivi de la longueur de la rom (donc 16384 octets soit &4000 codée sur 4 octets ce qui donne : &00,&40,&00,&00)
5-la rom proprement dite

donc si vous souhaitez simplement déplacer votre rom port physique &89 en &8A vous n'avez qu'a changer cb09 en cb10 (faites gaffe à l'ordre quand même, je n'ai pas testé si tout le monde sait interpréter ce fichier avec des roms numérotées dans le désordre).

--A noter ce tutoriel évoluera lorsque j'aurai géré correctement les problèmes de l'accès au basic pour que ce se soit plus propre quoi ^^--

Amusez-vous bien et en espérant que ça vous aide à vous faire vos menus pour vos besoins perso si comme moi vous avez un cpc+ une c4cpc mais pas d'extension ram/rom ;-)
Merci aux sites suscités qui m'ont permis de commencer à comprendre tout ça et à ceux qui ont bien voulu répondre à mes questions.

Voici le lien pour récupérer la cartouche .cpr : brbgospardos.cpr
les roms en vrac  Razz : cprparadosrom


Dernière édition par xtrabet le Mer 30 Déc - 18:21 (2015); édité 4 fois
Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Ven 3 Juil - 17:17 (2015)    Sujet du message: rom et port cartouche Répondre en citant

Je viens de lire et c'est pas mal du tout... Très bonne explication.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Sam 4 Juil - 11:59 (2015)    Sujet du message: rom et port cartouche Répondre en citant

C'est bizarre, j'avais testé le CprBuilder et il était buggué. Je suis donc surpris que ça fonctionne.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
xtrabet


Hors ligne

Inscrit le: 19 Juin 2015
Messages: 30

MessagePosté le: Sam 4 Juil - 12:52 (2015)    Sujet du message: rom et port cartouche Répondre en citant

Cool si c'est pas trop brouillon mes explications.
Pour cprbuilder il est bien possible qu'il ait corrigé un bug ou deux.
Wohhooo en avant pour la suite ;-)


Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Lun 6 Juil - 21:43 (2015)    Sujet du message: rom et port cartouche Répondre en citant

Euh, c'est quoi exactement la suite? Mettre Paris en bouteille?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
xtrabet


Hors ligne

Inscrit le: 19 Juin 2015
Messages: 30

MessagePosté le: Jeu 9 Juil - 12:04 (2015)    Sujet du message: rom et port cartouche Répondre en citant

Paris en bouteille?? ca va te faire dans les 256kb grand max..... non faut viser grand !

bon plus sérieusement avant la suite faut que je regle l'accès au basic ce sera bien.

en attendant j'ai ajouté les fichiers


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 22:24 (2017)    Sujet du message: rom et port cartouche

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation Toutes les heures sont au format GMT + 1 Heure
Aller à la page: <  1, 2
Page 2 sur 2

 
Sauter vers:  

Index | Panneau d’administration | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com