π
<-

[ASM] FasterCopy (fastcopy optimisé pour TIs récentes)

Assembleur, Axe, C/C++, ICE...

[ASM] FasterCopy (fastcopy optimisé pour TIs récentes)

Unread postby grosged » 01 Jan 2016, 14:50

En partant de la routine IonFastCopy décrite sur http://wikiti.brandonw.net/index.php?ti ... onFastCopy
Code: Select all
;-----> Copy the gbuf to the screen (fast)
;Input: nothing
;Output: graph buffer is copied to the screen
fastCopy:
di
ld a,$80
out ($10),a
ld hl,plotSScreen-12-(-(12*64)+1)
ld a,$20
ld c,a
inc hl
dec hl
fastCopyAgain:
ld b,64
inc c
ld de,-(12*64)+1
out ($10),a
add hl,de
ld de,10
fastCopyLoop:
add hl,de
inc hl
inc hl
inc de
ld a,(hl)
out ($11),a
dec de
djnz fastCopyLoop
ld a,c
cp $2B+1
jr nz,fastCopyAgain
ret

D'après mes calculs, cette routine dure 51588 T-States.

J'ai vite remarqué qu'en fonction de la TI utilisée, il était parfois possible d'accélérer la routine.
En effet, concernant mes TI-82 Plus et TI-84 Pocket.fr, nul besoin d'attendre un certain délai entre chaque écriture de port (instruction Out) alors qu'avec mon ancienne TI-83 Plus (de 1997), il est impératif d'avoir un délai minimum d'exactement 45 T-States entre chaque out($11),a et bien plus encore concernant ma TI-83 Parcus !

J'ai donc réfléchi à une sorte de super FastCopy destiné aux modèles TI les plus rapides.
Voici ce que ça donne:
Code: Select all
       di            ; 4 Interdit les interruptions.
       ld a,1                ; (7) bascule en mode
       out($10),a            ; (11) d'affiche 8-bit.
       in a,($10)            ; (10) controleur LCD assez rapide?
       rla                    ; (4) bit7 à 1 ? (veut dire "occupé")
       jr c,ClassicFastCopy   ; (12/7) oui? Alors on pars vers le classique fastcopy.
                                        ; sinon, on peut travailler sans délai !
       ld hl,plotSScreen+767   ; 10 Fin du buffer (=coin inf.droit).
       ld c,$11         ; 7 Port de données (lcd data port).
       ld a,6            ; 7 Après chaque "out($11)," (data port), la pos. d'écriture
       out($10),a         ; 11 video bougera d'1 octet vers la gauche.
       
       ld a,$2b              ; 7    colonne 12 (tout à droite)
       out($10),a         ; 11
       ld a,$bf         ; 7 et dernière ligne tout en bas, donc on
ligne:
       out ($10),a         ; 11 modifie la position verticale.
       outd            ; 16 Equivaut à out(c),(hl) / dec hl / dec b
       outd            ; 16 Ecriture d'une
       outd            ; 16 ligne
       outd            ; 16 entière
       outd            ; 16 de
       outd            ; 16 données
       outd            ; 16 (donc 12 octets)
       outd            ; 16 Lorsque la position d'écriture
       outd            ; 16 arrive complètement à gauche,
       outd            ; 16 elle repasse , ensuite,
       outd            ; 16 automatiquement à l'opposé
       outd            ; 16 (donc comme au début: tout à droite).
       dec a            ; 4 On passe à la ligne supérieure.
       jp m,ligne         ; 10 Pas encore sous $80 ? alors on boucle.
       ret            ; 10 Terminé.

ClassicFastCopy:         ; ici la routine fastcopy classique...
                                     ; (...)

Ce qui nous donne un total de 14001 T-States (on a presque divisé le temps précédent par 4 !)
1 T-State=1/6 microseconde à 6Mhz
Ce qui nous donne 13233/6 = env. 2333 microsecondes pour la TI-82 Plus
Last edited by grosged on 02 Aug 2020, 20:02, edited 8 times in total.
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.2%
 
Posts: 773
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile

Re: [ASM] Améliorer la routine IFastCopy

Unread postby Adriweb » 01 Jan 2016, 22:54

Bien joué :D

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 82.1%
 
Posts: 14880
Images: 1211
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [ASM] Améliorer la routine IFastCopy

Unread postby grosged » 06 Jan 2016, 19:30

Merci Adriweb :D
J'ai fait une petite mise à jour du post initial (j'ai ajouté en début de routine un test pour évaluer la rapidité du contrôleur LCD)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.2%
 
Posts: 773
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile


Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 guests

-
Search
-
Social TI-Planet
-
Featured topics
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
7196 utilisateurs:
>7159 invités
>28 membres
>9 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)