Vous n'êtes pas identifié.
Ce projet est de stocker directement des Executables en Ram
en fait, il faudra stocker les exe directement dans la Zone 8 : MCS WORK
C facile maintenant avec l'aide de 2072
en fait, on pourra copier un exec de la flash vers la ram, le supprimer, le renommer...
le nom sera toujours de 8 caracteres (ben le nom du file MemZone)
le fichier exe sera stocke directement et completement dans le file basic
1) Il faudra prendre la methode d'execution des exes de Whyp
2) L'integrer dans le plus d'explo possible
3)lister les exe presents en ram
4)pouvoir els executer
5)pouvoir els envoyer du pc grace a F100 et a Gcom
6)Pouvoir les effacer ou renommer
Donc pour dirxplor, je prendrais en charge le 1) 3) 4) 6)
le 2) je compter sur 2072 et les autres pour le faire
le 5) je compte sur dada
voila et merci
pour plus di'info, posez vos questions ici
=> Xlectron Power !
Hors ligne
Ca serait pas plus simple de créer un système de fichier dans cette zone (comme roeoender), comme ca pas besoin de recréer la routine d'execution, ni de nouveaux explorateurs. En plus tu pourrai meme ecrire dans ce fs.
Et on peut s'aider des sources de roedisk
Hors ligne
ok le 2) y'a pas de pb, ça sera intégré dans gx2, mais seulement lors des gdes vacances!!
Hors ligne
non c al merde car le lecteur doit faire 128k et ca boufe tout
au moins, la tt ezst en armonie et en plsu on a besoin de faire cette routine
Pour info : Xlectron = eXecutable Libre Ecriture Copie TRansfert reOmmage Nommage
voila
ps: pour tt ceux qui ont le temps, faites des tests !
Hors ligne
nop un fs qui tient dans un fichier basic (ou une zone). comme ca pas besoin de bouffer 128k
Hors ligne
bon beh si t pas d'accord...
Je trouve que c'est une bonne idee et je pret a la faire
faut que je cherche la methode dans les sources de Shine
Hors ligne
nan je suis d'accord mais je propose une autre idée, c'est tout
Hors ligne
on peut mettre qu'un lecteur de 64Ko en RAM aussi, le lecteur A: ne fait que 64Ko.
Hors ligne
ouais zete chient les gars, c pas grave si vous etes pas motive....
Hors ligne
je suis motivé, mais si c plus facile de mettre un lecteur en RAM, on peut le faire facilement. Tu m'as dit qu'il suffisait juste de modifier dirxplor pour qu'il puisse voir le lecteur U. Je sais pas c une suggestion :?
Hors ligne
non c plus complexe que ca
il faut executer une lib ramdisk.sys au boot de la calttos, ca prends de la mem, ca prends toute la mem basic, ...
c la merde koi
alors qu ela , c beaucoup plus simple, on se servira de la routine de Whyp :
.Continue mov si,OpenExecutable ; Affiche un message call AfficheText call Getkey ; Attend une touche call OldInt ;; ES pointe vers le segment de debut de l'executable mov dx,ds ; Stocke ds dans dx, plus simple a suivre dans l'evolution du programme qu'un push mov ax,es mov ds,ax mov ax,0x2000 mov es,ax ;; Maintenant ES pointe vers 0x2000, la zone ou on va ecrire, et DS pointe vers le debut de l'exe ;; On lit donc dans son entete les informations concernant sa taille mov cx,0x80 mov ax,0 mov di,0 rep stosw ; La zone remplie ici, de 256 octets, fera office de PSP ;; PSP mov word [es: 0],0x20CD ; Appel de l'int 20h mov word [es: 2],0x2000 ; Adresse de chargement du programme en mémoire mov word [es: 5],0xF09A ; Appel de l'int 21h mov word [es: 0x2C],0x2003 ; Place le bloc d'environnement en 2003h:0h mov word [es: 0x50],0x21CD ; Appel de l'int 21h mov word [es: 0x51],0xCB push ds mov ax,0 mov ds,ax mov ax,[ds: 0x84] ; Vecteur int21h mov [es:9],ax mov ax,[ds: 0x86] mov [es:7],ax mov ax,[ds: 0x88] ; Vecteur int22h mov [es:0x0A],ax mov ax,[ds: 0x8A] mov [es:0x0C],ax mov ax,[ds: 0x8C] ; Vecteur int23h mov [es:0x0E],ax mov ax,[ds: 0x8E] mov [es:0x10],ax mov ax,[ds: 0x90] ; Vecteur int24h mov [es:0x12],ax mov ax,[ds: 0x92] mov [es:0x14],ax pop ds mov word [es: 0x40],6 ; N° de version du dos ;; Copie de la ligne de commande et du bloc d'environnement push di ; On en aura besoin après push ds mov ds,dx mov si,command ; SI pointe sur la ligne de commande mov cl,[ds:si] ; CL contient la taille de la ligne de commande mov [es:0x80],cl add byte [es:0x80],2 ; La chaine est plus longue car on rajoute le $: mov ch,0 ; CX egalement mov di,0x83 ; Fait pointer DI vers la zone a ecrire dans le PSP rep movsb ; Copie la ligne de commande et sa taille en 0x80 du PSP mov bl,[CrtDrive] ; BL contient la lettre courante de lecteur mov [es:0x81],bl mov word [es:0x82],0x5C3A ; : mov si,envir ; SI pointe sur le bloc d'environnement mov cl,[ds:si] ; CL contient la taille du bloc mov ch,0 ; CX egalement inc si ; SI pointe sur le debut du bloc mov di,0x30 ; Fait pointer DI vers la zone a ecrire dans le PSP rep movsb ; Copie la ligne de commande et sa taille en 0x80 du PSP pop ds pop di ; On recupère DI push ds push word [ds: 0x4] ; On lit le mot contenant la taille prise en § par le fichier. 1§ = 512 octets mov bx,ds mov ax,[ds: 0x8] ; Taille de l'entete en secteurs de 16 octets add bx,ax mov ds,bx ; ds pointe vers le debut du binaire shr ax,5 ; ax contient la taille de l'entete en paragraphes dec ax ; ax contient la taille de l'entete en paragraphes -1 mov bx,ax pop ax ; ax contient la taille du fichier en § sub ax,bx ; ax contient la taille du binaire en § xor si,si ;; On va copier le binaire en memoire après le PSP. On va le copier 512 octets par 512, et incrementé à chaque fois les pointeurs de segments Copie: push si ; Si doit valoir 0, pour que [ds:si] soit correcte push di ; On aura besoin de ces deux valeurs a chaque passage de la boucle mov cx,0x200 rep movsw mov bx,es add bx,0x20 mov es,bx ; es = es + 20 mov bx,ds add bx,0x20 mov ds,bx ; ds = ds + 20 pop di pop si dec ax jnz Copie pop ds mov cx,[ds: 0x6] cmp cx,0 jz Execution mov si,[ds: 0x18] Relocation: mov di,[ds: si] mov ax,[ds: si+2] add ax,0x2010 mov es,ax add word [es: di],0x2010 add si,4 loop Relocation Execution: mov ax,0x3000 mov ss,ax push word 0xFFFE ; SP d'execution mov ax,[ds: 0x16] add ax,0x2010 push ax ; CS d'execution push word [ds: 0x14] ; IP d'execution mov ax,0x2000 mov ds,ax mov es,ax xor ax,ax xor bx,bx xor cx,cx xor dx,dx retf ; Charge depuis la pile IP,CS et PS
voila, faut faire pointer cs sur le debut du prog en ram
le seul proc c'est qu'il faut se demerder que l'exe soit sur un segment (cad une adresse multiple de 16 depuis le debut de la ram)
ce ne sont qu edes broutilles
il suffirais d'ajouter des octets nulles jusqua l'adresse correcte
le prob serais si on supprime un basic avant ca foirerais tout
donc il faudrais modifier la methode pour lancer un exe avec une adresse sur 21bits, et ca faut se pencher dessus
voili voila
Hors ligne
on a ka copier le contenu du fichier BASIC sur le segment 0x5000, celui qui me sert de mappage. C pas une solution ?
Hors ligne
L'autre truc c'est que vu que l'exe ne sera pas copié en ram, les données modifiées lors de l'execution seront rechargées a la prochaine execution
Hors ligne
non, on copierais l'exe dans le basic dans la rom allouee par dos comme un vulgaire exe en flash
tu ne peut pas lancer un exe dans l'etat, il faut le modifier
l'idee serait de transposer la methode en c pour y voir plus clair et avoir de l'aide de whyp !
je vias l'imprimer et voir ce que ej peut faire
Hors ligne
ah oui , c pas con ca dada, copier l'exe sur un zone ou l'adresse est multiple de 16, c vrai, c une bonne idee, comme ca ou aurait pas besoin de modifier la routine !
bravo dada !
Hors ligne
bon, voila, on a toute les cartes en main !
- Gcomm pour el transfert (ou pourais meme les transferer avec fa123)
- La routine pour executer + la technique pour le reloquer
- les routine de 2072 pour gerer les exe come des vulgaires fichiers !
voila, bon au travail !
il faut :
- faire la receptionn de fichiers basic (envoi de Xlectron depuis F100, a priori pas complike puisque Gcomm est fait)
- faire un code pour lister les Xlectron dans la ram (a priori facile avec Memzones)
- faire le code pour l'executer (un peu plus complexe mais abordable)
- faire le code pour supprimer et renommer les Xlectron (a priori facile avec Memzones)
Hors ligne
(c mon idée, au fait, alors tu me mettras ds les crédits pour ca et pour les futures tests par moi !)
Hors ligne
pour le credits, tu va un peu vite mon gars !
Hors ligne
oui, ce n'est qu'un projet!
Maintenant il faut que je regarde un peu cette routine et que je lise ça à tete reposée! ça serait impossible pour moi d'intégrer un truc autant important ds mon explo sans savoir comment ça marche lol
Hors ligne
bon j'ai lu la routine, elle peut etre convertie en C mais ca sera complexe
j'hesite :
- Soit je refais la routine et je copie directement l'exe en binaire dans la ram et je fais la relocation en "live", ce qui me permet de surpasser l'histoire d'adresse dans le segment
- Soit je copie l'exe dans la flash (second 64ko du secteur des langues) et je lance la fonction de whyp, mais faut que je l'inclue au link et ca seul tonton1664 sais le faire et c aussi complike
un probleme se pose :
Whyp copie l'exe a l'adresse 2000:0000 , ce qui appartient aux zones ram casio
donc soit :
- je cree une zone d'execution dans la ram casio (donc il faudra que le prog lance n'utilise pas les fonction qui trifouille la zone basic)
- je me demerde pour faire executer la fonction de whyp ailleur dans la ram pour copier l'exe sur le binaire en ram de dirxplor
voila les points qui me posent probleme
WHYP HELP
Hors ligne
Pourquoi on ne peut pas utiliser la même partie de la RAM que celle utilisé par les progs qu'on exécute depuis un lecteur flash ? Comme ça ça remplace le programme en cour d'exécution... En fait il faut faire la même chose que ce que fait la fonction C exec.
Quand on lance un programme depuis le menu de la g100 ou depuis un explorer le programme est entièrement copié dans la RAM a une adresse (0x0B6E:0x0)
En tout cas il ne faut pas utiliser de segment de la flash pour ce system sinon ça perd tout intérêt...
Hors ligne
attends, si tu execute un prog a cette adresse (par ex ton code de copie) et que tu copie un autre prog dessus, ca va foirer !
donc il va falloir que je place le code d'execution , ailleur dans la ram pour Overwriter l'exe deja present en ram
voial le probleme
en fait , la ft EXEC est placee dans la rom (car c du code romdos) donc on peut alors remplacer en toute trankilite le prog deja en route
la seconde solution serait de pouvoir trouver ce code et executer un exe juste en donnant le segment d'ou se trouve le prog, le probleme est que je n'ai pas la doc DOS de Ibm/Microsoft et je sais pas ou la trouver ...
Hors ligne
Slt,
C difficile de suivre vu que je vient pas souvent. Cependant, je veut bien aider si possible (mais g pas trop de temps)
J'ai vraiment galerer pour mettre en place la routine d'execution, ça fait plaisir de voir qu'elle pourrait être utile :-)
Le fait de charger la routine a l'endroit habituel des exe me semble une bonne idée. La routine de chargement peut s'ecrire en asm juste avant. En asm, elle prendrait pas bcp de places.
Sans trop se faire chier, il doit y avoir moyen de crée une routine simple qui receptionne un fichier, l'ecrit en memoire, et l'execute. Les fonction de conversion de l'exe se ferait alors sur le PC, le programme client n'aurait plus qu'a sauté a l'emplacement ou ce prog a été copié (juste après lui dans la ram).
Hors ligne
traduction :
je fais un binaire contenant la routine et je le met dans la zone basic
de dirxplor par exemple, je saute au binaire avec l'adresse de l'exe, ce bianire va charger l'exe et l'executer
bon, je veut bien, mais faut faire le binaire koi !
Hors ligne