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

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

Modérateurs : Carl, Papy.G, fneck

Avatar du membre
rendomizer
Messages : 235
Enregistré le : 17 juin 2016 21:00
Contact :

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

Message par rendomizer » 06 janv. 2018 10:39

Oui, j'aimerai savoir si on peut démarrer un programme en basic avec les touche CTRL et DELTA ? Si oui, comment on fait ?
le mot de passe c'est quoi ? quoi.

Avatar du membre
Mokona
Messages : 367
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

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

Message par Mokona » 06 janv. 2018 12:24

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

Avatar du membre
rendomizer
Messages : 235
Enregistré le : 17 juin 2016 21:00
Contact :

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

Message par rendomizer » 06 janv. 2018 13:42

tu réécris le manuel ?
le mot de passe c'est quoi ? quoi.

Avatar du membre
Mokona
Messages : 367
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

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

Message par Mokona » 06 janv. 2018 15:44

Je tente un commentaire complet et détaillé de la ROM. À mon rythme.

Avatar du membre
Carl
Modérateur
Messages : 10261
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

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

Message par Carl » 06 janv. 2018 17:40

voir le livre Cléf pour VG5000...re-vectoriser CTRL DELTA...

Carl

Avatar du membre
Mokona
Messages : 367
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

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

Message par Mokona » 06 janv. 2018 18:16

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)

Avatar du membre
Mokona
Messages : 367
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

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

Message par Mokona » 06 janv. 2018 18:27

Je me demande si INPUT n'est pas une faute de frappe ou de transcription d'avec "int up". Ça aurait du sens.

Avatar du membre
Carl
Modérateur
Messages : 10261
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

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

Message par Carl » 06 janv. 2018 18:27

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

Avatar du membre
rendomizer
Messages : 235
Enregistré le : 17 juin 2016 21:00
Contact :

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

Message par rendomizer » 06 janv. 2018 21:03

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 ?
le mot de passe c'est quoi ? quoi.

Avatar du membre
Mokona
Messages : 367
Enregistré le : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

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

Message par Mokona » 06 janv. 2018 22:01

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

joaopa
Messages : 400
Enregistré le : 14 sept. 2013 12:17

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

Message par joaopa » 07 janv. 2018 01:11

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
Modifié en dernier par joaopa le 07 janv. 2018 08:57, modifié 1 fois.

Avatar du membre
rendomizer
Messages : 235
Enregistré le : 17 juin 2016 21:00
Contact :

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

Message par rendomizer » 07 janv. 2018 07:22

Merci de nous dire que c'est possible Joaopa mais une capture d'écran n'est pas une preuve lol
le mot de passe c'est quoi ? quoi.

joaopa
Messages : 400
Enregistré le : 14 sept. 2013 12:17

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

Message par joaopa » 07 janv. 2018 09:58

C'est chiant quand on n'a pas le code source, n'est-ce pas? :mrgreen:

Avatar du membre
rendomizer
Messages : 235
Enregistré le : 17 juin 2016 21:00
Contact :

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

Message par rendomizer » 07 janv. 2018 10:29

lol alors je te sommes de nous donner la solution svp ! :twisted:
le mot de passe c'est quoi ? quoi.

Avatar du membre
Carl
Modérateur
Messages : 10261
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

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

Message par Carl » 07 janv. 2018 10:43

Merci Joaopa pour les explications

voila une solution....
delta-basic.jpg
delta-basic.jpg (309.62 Kio) Vu 569 fois
Carl

Répondre