Amstrad Plus Forum Index

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

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

****Programmation du Cpc Plus
Goto page: 1, 2, 3  >
 
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Asic
Previous topic :: Next topic  
Author Message
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Wed 10 Sep - 12:47 (2014)    Post subject: ****Programmation du Cpc Plus Reply with quote

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...."


Last edited by Ast on Tue 16 Sep - 19:26 (2014); edited 2 times in total
Back to top
Publicité






PostPosted: Wed 10 Sep - 12:47 (2014)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
roudoudou


Offline

Joined: 14 Jul 2016
Posts: 427
Localisation: LYON
Masculin
Point(s): 46
Moyenne de points: 0.11

PostPosted: Thu 29 Jun - 15:59 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

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


Quote:
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>


Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Thu 29 Jun - 16:35 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

roudoudou wrote:
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


Quote:
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...."


Back to top
Longshot


Offline

Joined: 21 Nov 2015
Posts: 93
Masculin
Point(s): 8
Moyenne de points: 0.09

PostPosted: Sat 1 Jul - 22:51 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

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

Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sun 2 Jul - 00:48 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

Longshot wrote:
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...."


Back to top
Longshot


Offline

Joined: 21 Nov 2015
Posts: 93
Masculin
Point(s): 8
Moyenne de points: 0.09

PostPosted: Sun 2 Jul - 01:05 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

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.


Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sun 2 Jul - 10:58 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

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...."


Back to top
Longshot


Offline

Joined: 21 Nov 2015
Posts: 93
Masculin
Point(s): 8
Moyenne de points: 0.09

PostPosted: Sun 2 Jul - 11:46 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

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...)...


Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sun 2 Jul - 12:06 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

Longshot wrote:
...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...."


Back to top
Longshot


Offline

Joined: 21 Nov 2015
Posts: 93
Masculin
Point(s): 8
Moyenne de points: 0.09

PostPosted: Sun 2 Jul - 12:36 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

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


Back to top
fgbrain


Offline

Joined: 01 Jun 2015
Posts: 17
Localisation: Greece
Masculin
Point(s): 1
Moyenne de points: 0.06

PostPosted: Sat 18 Nov - 12:45 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

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

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


Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Mon 20 Nov - 23:08 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

fgbrain wrote:
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...."


Back to top
roudoudou


Offline

Joined: 14 Jul 2016
Posts: 427
Localisation: LYON
Masculin
Point(s): 46
Moyenne de points: 0.11

PostPosted: Mon 20 Nov - 23:17 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

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)


Back to top
Ast
Administrateur

Offline

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Mon 20 Nov - 23:23 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

roudoudou wrote:
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)


#6800=0 -> Int mode Gate array
#6801=0 -> SplitScreen 0
#6802-#6803=0 -> No split screen (Splitscreen Secondary Start adress)
#6804=0 ; Start first bloc
#6805=0 ; ivr=0 Wink
...
etc..
_________________
Ast/iMP4CT

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


Back to top
roudoudou


Offline

Joined: 14 Jul 2016
Posts: 427
Localisation: LYON
Masculin
Point(s): 46
Moyenne de points: 0.11

PostPosted: Tue 21 Nov - 08:48 (2017)    Post subject: ****Programmation du Cpc Plus Reply with quote

You miss the point. Are those registers readable? If not you cannot use LDIR

Back to top
Display posts from previous:   
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> Asic All times are GMT + 2 Hours
Goto page: 1, 2, 3  >
Page 1 of 3

 
Jump to:  

Index | Administration Panel | Create a forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group