Vous n'êtes pas identifié.
C' est un petit executable qui permet de tuer le menu, et de tomber ainsi sur minicmd!
Executable:
http://thunderboom.free.fr/menukill.exe
Fichier source:
http://thunderboom.free.fr/menukill.c
Fonctionnement:
D' abbord il faut savoir que l' execution d' un executable le fait charger en mémoire.
Au démarrage, si on simplifie, command.com est lancé, puis l' executable qui se charge du menu, launcher.exe il me semble.
Ca se fait par couche:
[COMMAND.COM]
[LAUNCHER.EXE]
command.com et launcher.exe utilise une fonction spécial d' execution, qui, lorsque l' executable désiré est chargé, stop leur execution pour passer le relais au processus enfant.
Si le processus enfant est quitté via l' interruption correspondante, le processus parent, dans la majorité des cas LAUNCHER.EXE (donc le menu principal) repprend la main.
Faut savoir aussi que l' execution du menu prend de la place, qui aurait pu par exemple ètre utilisée à d' autre fin, comme les programmes en limite de taille tel SCORCH sur G100+!
Maintenant, ce que j' ai fait:
J' ai utilisé une fonction(setclock), qui se charge d' attacher une fonction newint1C(), à l' interruption 1C ( appellée a peu près 50 fois par seconde).
Cette fonction, incrémente la variable clock, jusqu' a que celle ci atteigne 10, et alors appelle exit(0), qui quitte le programme courant.
En gros, ce qui se passe lors de l' execution du programme:
1- mettre en place de l' interruption ( programme courant: menukill.exe)
2- revenir au programme précédent
3- le menu principale de la G100 (programme courant: LAUNCHER.EXE)
Au bout des 10 appels de l' int 1C, bam!
exit() est appelée, et le programme courant, qui était LAUNCHER.EXE, est quitté, ce qui redonne l' execution à COMMAND.COM.
Pour éviter que ça le fasse tout le temps, l' interruption se désinstalle elle meme.
Effet: mémoire libérée!
Application:
1- on lance enter.com
2- on lance menukill.exe
Et hop!
C' est compatible G100+, faudrait voir pour les autres modêles.
D' ailleurs sur certains modèles ça devrait ptet pas fonctionner!
Hors ligne
ahhh j'ai compris ! lol
ca marche sous rom 1.02
Hors ligne
au passage, ayez de l' observation!
Regardez si quelque chose n' a pas été écrit sur le menu principal (puisque j' ai pas mis de routines d' éffacement dedans)
Hors ligne
c cool sa!
é donc les gros jeu comme scorch, falcon, etc sa marche maintenant?
dans se cas la sa doit être possible lanC un compilo comme roe non?
Hors ligne
faut faire le test si ça libère suffisement de mémoire... ceci dit, j' ai réussi à remplacer, avec menukill, le command.com executée par la calc par un autre executable, qui pourrait ètre donc un autre shell... conclusion, avec cette méthode, peut ètre qu' on aura enfin des explos qui reviennent au meme état après qu' on ai fini d' executer un jeu...
Exemple pr ceux qu' auraient pas compris:
vous lancez (allez on va faire plaisir à superna) dirxplor, vous executez un jeu, et quand vous quitter le jeu, ça revient tout seul à dirxplor... comme l' explorateur windows en somme!
Hors ligne
c kewl sa!
en tout cas c'est plus simple que la méthode a roe pour à peut près les mêmes résultats!
Hors ligne
j' arrive à lancer n' importe quel executable sur le meme lecteur à present automatiquement après avoir viré LAUNCHER.EXE ( le menu) et COMMAND.COM (l' interpréteur de commande) ce qui signifie que je peut lancer un autre SHELL!!!!
j' ai lancé touche par exemple, et il fonctionne niquel!
-edit-
Maintenant on lance n' importe quelle executable, suffit de l' entrer en ligne de commande tel que ceci:
MENUKILL.EXE N:TOUCHE2.EXE
2 problèmes ( évidemment):
-quand l' executable en question est quitté, bin on doit rebooter puisqu' on peut plus rien faire d' autre
-si on appuie sur des touches pendant que menukill est en fonctionnement, ça mettre une mauvaise ligne de commande (voir comment je fait pour executer ceci)
Comment je fait(programme principal):
J' utilise toujours mon système d' interruption, sauf que voici les actions executées à la suite:
-Je pointe avec un pointeur de portée globale sur l' argument 1 (pour obtenir l' execution)
-Je met en place l' interruption
-Je quitte
Interruption:
-Je quitte>ça enleve le menu
-Je quitte>ça enleve l' interpréteur de commande, ROMDOS indique qu' il n' y a pas de Shell executé couremment et demande le chemin d' un nouveau Shell à executer
-Avec la fonction de swifter pour entrer une touche dans le buffer du clavier, je simule la frappe du 1er argument et je valide en entrant la meme valeur que RETURN, à savoir 0x0D(13)
-Je desinstalle l' interruption
Entre chaque action de l' interruption se trouve une attente, pour permettre à romdos de réfléchir quand meme ( car sinon ya forte probabilité de plantage)
Voila l' executable:
http://thunderboom.free.fr/chgshell.exe
Attention: le fait de mettre ceci:
chgshell.exe X:chgshell.exe (ou X est le lecteur ou vous l' avez mis)
conduit certainement au plantage lol
Hors ligne
Super Mais ce serait encore mieux si tu le mettais dans le File Sharing en .rar avec un petit readme à côté
Hors ligne
2072: mdr ça va venir!
tiens oué au passage: jvais tester un nouveau truc marrant cette aprem: spawnv()
et si ça fonctionne correctement, je pourrait faire en sorte que les explos soit réexecutés après...
en fait faudra alors 3 executables:
chgshell (arg: chemin de l' executé)
executor (arg: chemin de l' executé en boucle)
votre explo
Il suffira, en théorie, de faire:
chgshell.exe executor.exe dirxplor.exe ( si dirxplor est l' executé)
pour que dirxplor soit réexecuté à chaque fois!
vais m' y mettre maintenant :P
Hors ligne
tu as des news ?
ca peut etre interessant.
pour les explo je sais pas trop si c utile. je n'ai pa d'exemple en tete. mais bon ki sait.
j'espère ke ca marche.
Hors ligne