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 

****Programmation du Cpc Plus
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 10 Sep - 11:47 (2014)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

Avant de commencer notre apprentissage du Cpc Plus, nous allons commencer par apprendre comment accéder aux fonctions supplémentaires offertes par le Cpc Plus, mais protégées par Amstrad. 


17 octets sont à envoyer sur le port #bc pour pouvoir accéder à celles-ci. Nous appelerons ceci, le "Délocage de l'Asic". Une fois celui-ci délocké, nous pourrons via le port #7F, accéder ou non à la page I/O de l'Asic appelée RMR2. 


Cette Page se connecte à partir de l'adresse Mémoire #4000. Je vous expliquerai plus loin comment utiliser toutes ces fonctions avec de petits exemples.


Mais commencons par délocker l'asic....


--------------------------------------


Before starting the learning of Cpc Plus, we're going to learn how to access additionnal functions offered by the Cpc Plus but protected by Amstrad.


17 bytes must be send in #bc port to access them. We call that "Delocking the Asic". When the Asic will be delocked, we could access I/O Asic Page called RMR2 by #7F port.


This page is connected therefrom #4000. I'll explain you later how to use all these functions with some little examples.


But, We are going to start Delocking the Asic.


Code:
;
;              Delocking this fucking Asic
;              (c)Amstrad
;
Delock   DI                  ; Disable Interruptions
         LD E,17             ; 17 bytes to send to Crtc
         LD HL,ASIC          ; Asic Table (value you must send to crtc)
         LD BC,#BC00
Loop    
         LD A,(HL)           ; Put value in reg A
         OUT (C),A           ; Send value to Crtc
         INC HL   ; HL=HL+1
         DEC E               ; E=E-1
         JR NZ,Loop               
         EI                  ; Enable interruptions 
         RET
ASIC    
         DEFB 255,0,255,119,179
         DEFB 81,168,212,98,57,156
         DEFB 70,43,21,138,205,238   ; here are the 17 values to access Asic.












Comme je l'ai dit plus haut la connection de la page I/O se fait via le port #7F


------


As I told you above, connecting the I/O must be done by  #7F port


Code:
; Connecting I/O Page
Ld bc,#7FB8
out (c),c
.....
; Deconnecting I/O Page
Ld bc,#7fA0
out (c),c















..... A suivre


-------


...... To be continued
_________________
Ast/iMP4CT

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


Dernière édition par Ast le Mar 16 Sep - 18:26 (2014); édité 2 fois
Revenir en haut
Publicité






MessagePosté le: Mer 10 Sep - 11:47 (2014)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
BDCIRON
Invité

Hors ligne




MessagePosté le: Mer 10 Sep - 23:06 (2014)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant




Dernière édition par BDCIRON le Lun 29 Juin - 13:34 (2015); édité 1 fois
Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Jeu 11 Sep - 10:58 (2014)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

Merci, erreur corrigée.
_________________
Ast/iMP4CT

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


Revenir en haut
roudoudou


Hors ligne

Inscrit le: 14 Juil 2016
Messages: 275
Localisation: LYON

MessagePosté le: Jeu 29 Juin - 14:59 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

Je remonte ce message (presque le plus ancien Mr. Green ) pour parler de relock de l'Asic

Je n'ai pas encore eu le temps de tester mais...

Les specs d'ArnoldV revues et corrigées sont très intéressantes à ce sujet

Déjà, on y apprend qu'il n'y a pas une mais plusieurs séquences de déverrouillage qui fonctionnent

Ensuite il aurait testé le verrouillage, à ne pas confondre avec une désactivation hein, toute fonction activée reste active mais on ne peut plus commuter la page ASIC

voir specs: http://www.cpcwiki.eu/index.php/Arnold_V_Specs_Revised


Citation:
The unlocking sequence has found to be:
<not zero> <zero>
&ff,&77,&b3,&51,&a8,&d4,&62,&39,&9c,&46,&2b,&15,&8a,&cd
<any value>

The locking sequence has found to be:
<not zero> <zero>
&ff,&77,&b3,&51,&a8,&d4,&62,&39,&9c,&46,&2b,&15,&8a
<any value - but not &cd>


Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Jeu 29 Juin - 15:35 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

roudoudou a écrit:
Je remonte ce message (presque le plus ancien Mr. Green ) pour parler de relock de l'Asic

Je n'ai pas encore eu le temps de tester mais...

Les specs d'ArnoldV revues et corrigées sont très intéressantes à ce sujet

Déjà, on y apprend qu'il n'y a pas une mais plusieurs séquences de déverrouillage qui fonctionnent

Ensuite il aurait testé le verrouillage, à ne pas confondre avec une désactivation hein, toute fonction activée reste active mais on ne peut plus commuter la page ASIC

voir specs: http://www.cpcwiki.eu/index.php/Arnold_V_Specs_Revised


Citation:
The unlocking sequence has found to be:
<not zero> <zero>
&ff,&77,&b3,&51,&a8,&d4,&62,&39,&9c,&46,&2b,&15,&8a,&cd
<any value>

The locking sequence has found to be:
<not zero> <zero>
&ff,&77,&b3,&51,&a8,&d4,&62,&39,&9c,&46,&2b,&15,&8a
<any value - but not &cd>


Mais dis moi, c'est fort intéressant tout cela!!!
_________________
Ast/iMP4CT

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


Revenir en haut
Longshot


Hors ligne

Inscrit le: 21 Nov 2015
Messages: 66

MessagePosté le: Sam 1 Juil - 21:51 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

Quelqu'un a t il déjà essayé d'envoyer la séquence de délockage sur un ctrc type 4? Twisted Evil

Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Sam 1 Juil - 23:48 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

Longshot a écrit:
Quelqu'un a t il déjà essayé d'envoyer la séquence de délockage sur un ctrc type 4? Twisted Evil






Oui moi !
Envoyer la séquence de délockage sur un crtc type 4, n'apporte rien de plus, comme sur n'importe quel autre crtc d'ailleurs (sauf le 3)
Là où tout se complique c'est lorsque l'on veut commuter une page asic qui n'existe pas (out &7f00,&b8).
C'est le plantage assuré, un beau reset !!!  Mr. Green   


Ps : content de te lire Serge!
_________________
Ast/iMP4CT

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


Revenir en haut
Longshot


Hors ligne

Inscrit le: 21 Nov 2015
Messages: 66

MessagePosté le: Dim 2 Juil - 00:05 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

J'ai vu de la lumière... Mr. Green
Je suppose que tu parles du basic, car tu n'as pas forcément un reset en tentant de "commuter une page asic" sur un cpc old.
Sans délockage le bit 5 de la fonction MF du Gate Array est inopérant et avec &b8, on ne fait juste que passer en mode graphique 0, activer la rom basse, désactiver la haute, et remettre à 0 le compteur de ligne.


Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Dim 2 Juil - 09:58 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

En assembleur aussi, si ta routine est située par exemple dans la plage 0-#3fff par exemple.
_________________
Ast/iMP4CT

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


Revenir en haut
Longshot


Hors ligne

Inscrit le: 21 Nov 2015
Messages: 66

MessagePosté le: Dim 2 Juil - 10:46 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

Je disais ça car tu parlais de "plantage assuré".
C'est en basic que tu n'as pas trop le choix de l'endroit ou tu fais le out, et qu'il est déconseillé de manipuler la connexion des roms.
En assembleur, tu es sensé savoir ce que tu fais, et en général, on évite de couper la branche sur laquelle on est assis (sauf avec quelques protections...)...


Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Dim 2 Juil - 11:06 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

Longshot a écrit:
...et en général, on évite de couper la branche sur laquelle on est assis (sauf avec quelques protections...)...




Il y a des farfelus partout, tu sais   Mort de Rire
_________________
Ast/iMP4CT

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


Revenir en haut
Longshot


Hors ligne

Inscrit le: 21 Nov 2015
Messages: 66

MessagePosté le: Dim 2 Juil - 11:36 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

Certaines protections s'arrangeaient pour calculer une valeur (via des données fdc incopiables par exemple, et autres calculs tordus) servant à faire un out de commutation dans leur propre espace d'adressage. Le code suivant le out était alors un "fake code" pour tromper le monde, alors qu'en réalité, le code exécuté avait lieu à l'adresse suivant le out dans la rom...
Assez dangereux pour la compatibilité puisqu'on arrivait sur des instructions "choisies"...
A part ça, c'est quand même assez classique puisque la zone des RST est dupliquée, et RST 00 bascule directement en rom basse.
Et passer de C0 à C2 (et inversement) nécessite forcément des points de passage...


Revenir en haut
fgbrain


Hors ligne

Inscrit le: 01 Juin 2015
Messages: 11
Localisation: Greece

MessagePosté le: Sam 18 Nov - 11:45 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

What would be the smallest proper code to set ASIC back to normal??

I mean : reset spites.splits/scrolls/DMA etc.. 


Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Lun 20 Nov - 22:08 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

fgbrain a écrit:
What would be the smallest proper code to set ASIC back to normal??

I mean : reset spites.splits/scrolls/DMA etc.. 



I think you could use this kind of code :

Code:

;
; Raz Asic Register - Ast/iMPact 20/11/2017
; For FgBrain
;
 
 org #a000
 
 DI ; Disable Interruptions
 LD HL,ASIC ; First Asic Delock
 LD BC,#BC11
Loop
 LD A,(HL) ; Put value in reg A
 OUT (C),A ; Send value to Crtc
 INC HL ; HL=HL+1
 dec c ; c=c-1
 Jr NZ,Loop
;
 ld bc,#7FB8 ; Page Asic I/O On
 out (c),c
;
; Clear Sprites
; Zone = #4000-#4FFF
;
 ld hl,#4000
 ld bc,#fff
 call clear
;
; Clear Sprites x,y,magnify
; Zone = #6000-#607C
;
 ld hl,#6000
 ld bc,#7C
 call clear
;
; clear Colors
;
 ld hl,#6400
 ld bc,#20
 call clear
;
; Clear Sprites color
 ld hl,#6422
 ld bc,#1D
 call clear
;
; Clear Pri, Splt, SSa & sscr, & ivr
;
 ld hl,#6800
 ld bc,5
 call clear
;
; Clear Dma part
;
 ld hl,#6c00
 ld bc,#0f
 call clear
;
 ld bc,#7fa0 ; Page Asic I/O off
 out (c),c
;
 EI ; Enable interruptions 
 RET
;
clear ld d,h
 ld e,l
 inc de
 ld (hl),0
 ldir 
 ret
;
ASIC
 DEFB 255,0,255,119,179
 DEFB 81,168,212,98,57,156
 DEFB 70,43,21,138,205,238


_________________
Ast/iMP4CT

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


Revenir en haut
roudoudou


Hors ligne

Inscrit le: 14 Juil 2016
Messages: 275
Localisation: LYON

MessagePosté le: Lun 20 Nov - 22:17 (2017)    Sujet du message: ****Programmation du Cpc Plus Répondre en citant

Not sure it's safe to use LDIR in #6800 or #6C00 area...
In addition to that, disabling sprites is enough to hide them (if i remember well, Asic sprites data are undefined when power ON)


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 16:01 (2017)    Sujet du message: ****Programmation du Cpc Plus

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 1 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