MSX Village forum

La Place des Développeurs Routine COPY en ASM

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 08/01/2016 à 09h32

Reprise du message précédent

En marge du copy que je cherche à rendre plus rapide, je cherche aussi à accélérer l'accès à toutes mes données graphiques.
Je viens de faire une jolie découverte qui pourra intéresser l'ami Igal avec son "moteur à brides" :)

Une image de 54Ko met 47 cycles à se charger et s'afficher à l'écran avec un BLOAD ,S.

Nestor Basic possède des fonctions qui permettent de lire/Ecrire directement sur les secteurs d'un disque.
En ayant préalablement sauvegardé mon image de 54Ko directement dans les secteurs de la carte SD,
J'arrive maintenant à lire et afficher l'image en 18 Cycles seulement ! :|
Soit un gain de 29 cycles (Près d'une demi seconde tout de même) Edité par ericb59 Le 08/01/2016 à 10h12


banniere-ericb59e
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 08/01/2016 à 10h08
ericb59 :
@Z80 Je viens de tester mes routines actuelles en ayant préalablement coupé l'affichage par un VDP(1)=VDP(1)AND191.... Les temps sont exactement les même qu'en gardant l'affichage actif.


Ce que tu gagnes avec la méthode z80, tu dois le perdre avec le temps de l'interprétation de "VDP(1)=VDP(1)AND191.... ". Edité par GDX Le 08/01/2016 à 10h09
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 08/01/2016 à 13h16
Effectivement, cela peut être très intéressant surtout pour msx2 et 2+ :)

Je travaille chaque jour sur le moteur pour permettre de Scroller à droite comme à gauche à volonté :)

Jipe l'avait dit et je me rend compte comme c'est compliqué mais je pense avoir trouvé la solution.

Autre point intéressant si le moteur évolue Côme je le souhaite, ce dernier aura la particularité de lier "espace et le temps" ^^


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 08/01/2016 à 15h48
Finalement j'ai gagné 35% de temps sur mes Copy :)

Au lieu de faire un COPY "File.xx" to (xx,yy),0

Je charge les données dans la VRAM directement depuis les secteurs du disque, puis je fais un COPy (x1,y1)-(x2,y2),1 to (xx,yy)

C'est plus rapide que de charger directement depuis le disque !! Edité par ericb59 Le 08/01/2016 à 15h48


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 08/01/2016 à 16h26
Citation :
Je charge les données dans la VRAM directement depuis les secteurs du disque


oui mais ton programme va t'il être portable sur d'autre support que le tien ?


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 08/01/2016 à 17h46
Jipe :
Citation :
Je charge les données dans la VRAM directement depuis les secteurs du disque


oui mais ton programme va t'il être portable sur d'autre support que le tien ?




y a pas de raison, j'utilise des fonctions standard. La partition doit faire 32Mo c'est tout...


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 08/01/2016 à 18h04
oui mais par secteurs ça veut dire que la place est figée sur le disque ou bien que tu utilise un fichier avec des index donc déplaçable ?


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5566

Le 08/01/2016 à 18h21
Je place mes données sur des secteur prévus à cet effet. Donc non déplaçables.
J'ai une partition de 32 MO. J'utilise les secteurs >32000 pour le stockage des données. Edité par ericb59 Le 08/01/2016 à 18h21


banniere-ericb59e
Site web    
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 08/01/2016 à 21h13
GDX :
ericb59 :
@Z80 Je viens de tester mes routines actuelles en ayant préalablement coupé l'affichage par un VDP(1)=VDP(1)AND191.... Les temps sont exactement les même qu'en gardant l'affichage actif.


Ce que tu gagnes avec la méthode z80, tu dois le perdre avec le temps de l'interprétation de "VDP(1)=VDP(1)AND191.... ".




Pour moi l'idée c'était de faire de l'assembleur pas du basic :)


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie