[WIP]ASM C64

Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Izidor
Messages : 13
Inscription : 01 mars 2023 15:38

Re: [WIP]ASM C64

Message par Izidor »

Alors, j'ai revue mon code et finalement j'ai trouvé pourquoi ce n'était pas stable :wink:
En fait, j'ai ajouté deux instructions en début et fin de routine pour sauvegarder les registres A et X.
; Sauvgarde des registres en début de routine IRQ
PHA
TXA
PHA
;...
;Puis, restaures les valeurs de registres en fin de routine IRQ
PLA
TAX
PLA
lightbeing
Messages : 52
Inscription : 11 déc. 2021 16:05
Localisation : Région parisienne

Re: [WIP]ASM C64

Message par lightbeing »

Effectivement ne pas oublier de sauvegarder les les registres A, X et Y au tout début de la routine de gestion des interruptions quand on a désactivé la ROM Kernal et la ROM Basic. Puis les rétablir à la fin de la routine

Là tu as choisi la pile S pour contenir les valeurs des registres mais tu peux aussi utiliser cette astuce de SMC, qui prend un peu moins de cycles :

sta atemp+1
stx xtemp+1
sty ytemp+1

[... ta routine gestion des interruptions...]

atemp lda #$00
xtemp ldx #$00
ytemp ldy #$00
__sam__
Messages : 7989
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [WIP]ASM C64

Message par __sam__ »

Ah du code auto-modifié! Un délice de fin c0d3r :mrgreen:
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
lightbeing
Messages : 52
Inscription : 11 déc. 2021 16:05
Localisation : Région parisienne

Re: [WIP]ASM C64

Message par lightbeing »

Tu as mieux que le code auto-modifié.

Un PHA PLA prend 7 cycles. Avec un TXA et TAX, on rajoute 4 cycles... bof bof.

Le code auto-modifié que j'ai décrit prend 6 cycles.

Mais si tu utilises un STA et LDA en page zéro, c'est 5 cycles. Champagne ! 8)
Répondre