Page 1 sur 4

comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 10:39
par rendomizer
Oui, j'aimerai savoir si on peut démarrer un programme en basic avec les touche CTRL et DELTA ? Si oui, comment on fait ?

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 12:24
par Mokona
Hello,

Lorsque la touche DELTA est appuyée, cela appelle l'interruption non masquable (la touche est branchée dessus "directement", elle n'est pas lue par le moniteur).

À l'adresse $0066 (NMI) se trouve un JP $47EE (en RAM donc) qui est le vecteur du reset à chaud du coup.

Lors du boot, ce vecteur contient initialement JP $0069 (qui reset la langue d'affichage et du clavier).
À la fin du boot, cet emplacement est initialisé avec un JP $1118.

$1118 vérfie si CTRL est appuyé. Si ce n'est pas le cas, rien n'est fait. Si c'est le cas, ça branche sur le reset à chaud.

Du coup... il faut que tu changes le JP $1118 en $47EE pas un JP vers chez toi, et recopiant le test de CTRL mais qui branche chez toi aussi.

Pour lancer un programme BASIC directement, je ne sais pas encore. Peut-être que le plus simple est de mettre RUN suivi de $0D dans le buffer d'entrée et de laisser faire le moniteur en BASIC.

(à y réfléchir un peu plus, ça ne sera pas suffisant... je n'ai pas de solution clé en main, je n'ai pas fini le commentaire détaille de cette partie de la ROM).

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 13:42
par rendomizer
tu réécris le manuel ?

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 15:44
par Mokona
Je tente un commentaire complet et détaillé de la ROM. À mon rythme.

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 17:40
par Carl
voir le livre Cléf pour VG5000...re-vectoriser CTRL DELTA...

Carl

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 18:16
par Mokona
Merci pour le pointeur vers le livre, j'avais oublié cette partie.

"Il suffit de vectoriser les interruptions NMI sur la routine suivante".

La routine est sympa du coup. Elle sort de l'interruption puis branche sur l'instruction RUN ($259A, c'est RUN).

Ce livre est une des raisons qui me pousse à faire un commentaire complet : il est imprécis et ne va pas assez loin dans ces explications. Pire... il y a des erreurs.

Le livre indique $47ef-47f0 pour le vecteur. Donc non, c'est $47ee-$47f0 (3 octets nécessaires pour un JP absolu). En modifiant légèrement la phrase, l'adresse peut être changée en $47ef-47f0 pour ce vecteur là, car il contient déjà un JP. Ce qui n'est pas le cas de la majorité des autres vecteurs qui contiennent un RET.

En reroutant uniquement de cette manière, d'après le code, une simple pression sur Delta suffira. Puisque la détection du CTRL est géré en soft (cependant, je n'ai pas essayé sur machine réelle, je me le note).

(accessoirement, en page 82, $47ee est nommé "vecteur de la commande INPUT"... voilà voilà... si quelqu'un a une idée de ce qui aurait pu induire cette légende, je suis preneur. Dans le manuel technique, le vecteur se nomme nmihk)

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 18:27
par Mokona
Je me demande si INPUT n'est pas une faute de frappe ou de transcription d'avec "int up". Ça aurait du sens.

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 18:27
par Carl
Je comprend pourquoi je n’arrivais pas a utiliser le truc de la re vectorisation...
Merci Molkona pour la correction.
Certains jeux utilisent effectivement cette astuce avec uniquement la touche delta.
Carl

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 21:03
par rendomizer
toujours rien j'ai essaillé de revectoriser avec un call $259A ( qui fait un run basic tout bête ) mais ça n'a pas marché :|
Alors j'ai écri un bout de code en $7000 pour appeler le run basic et revectoriser vers $7000 mais rien :?
Puis j'ai fait un JP $259A en $47ee $47EF $47F0 mais la aussi rien :shock:

Qui va nous trouver la solution, Daniel, Joaopa ou Mokona ?

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 06 janv. 2018 22:01
par Mokona
Ou rendomizer ?

Donc... en mettant le code du livre, j'ai droit à un beau RESET complet de la machine lors de l'appuie sur Delta. À moins que je ne me sois planté dans la recopie, ça n'a pas l'air de fonctionner. Je regarderai un jour pourquoi.

J'ai quand même vérifié que la théorie de la vectorisation de DELTA fonctionnait. Et oui. Si par exemple, plutôt que d'appeler RUN, j'affiche un message à l'écran (mais en assembleur, pas en BASIC), ça fonctionne.

Exemple ci-dessous :

Code : Tout sélectionner

10 ASM=&"7000"
20 READ A$:IF A$="FIN" THEN 500
30 A$="&"+CHR$(34)+A$+CHR$(34):A=VAL(A$)
40 POKE ASM,A
50 ASM=ASM+1
60 GOTO 20
100 DATA CD,74,00,F5,C5,D5,E5,21,12,70,CD,AA,36,E1,D1,C1
110 DATA F1,C9,42,6F,6E,6A,6F,75,72,20,21,00
400 DATA FIN
500 POKE &"47EE",&"C3"
510 POKE &"47EF",&"00"
520 POKE &"47F0",&"70"
Le code source qui va avec :

Code : Tout sélectionner

        ORG $7000

        CALL $0074

        PUSH AF
        PUSH BC
        PUSH DE
        PUSH HL

        LD HL, chaine
        CALL $36AA

        POP HL
        POP DE
        POP BC
        POP AF

        RET
    chaine:
        DEFB "Bonjour !", 0

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 07 janv. 2018 01:11
par joaopa
La revectorisation de CTRL+DELTA pour exécuter un programme BASIC fonctionne très bien. Il faut faire attention que le programme de clefs pour vg5000 ne prend en compte que la touche DELTA.

@CARL: puisqu'en 47EE, il y a déjà le JP, il suffit de changer les deux octets 47EF et 47F0 qui correspondent à la nouvelle adresse souhaitée.

Voici une capture d'écran du résultat d'un programme BASIC qui affiche toto à chaque envoi de CTRL+DELTA
https://drive.google.com/open?id=1O4lcQ ... 1oRxhdJSWC

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 07 janv. 2018 07:22
par rendomizer
Merci de nous dire que c'est possible Joaopa mais une capture d'écran n'est pas une preuve lol

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 07 janv. 2018 09:58
par joaopa
C'est chiant quand on n'a pas le code source, n'est-ce pas? :mrgreen:

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 07 janv. 2018 10:29
par rendomizer
lol alors je te sommes de nous donner la solution svp ! :twisted:

Re: comment revectoriser les touches CTRL DELTA pour un prog en basic ?(VG5000)

Publié : 07 janv. 2018 10:43
par Carl
Merci Joaopa pour les explications

voila une solution....
delta-basic.jpg
delta-basic.jpg (309.62 Kio) Consulté 4883 fois
Carl