Forum Graph100

Forum Graph100

Vous n'êtes pas identifié.

Annonce

Bonjour et bienvenue sur le nouveau Forum Graph100 !
L'intégralité des données a été transférée sur un forum PunBB et tout les comptes sont fonctionnels avec le même nom d'utilisateur et mot de passe.
Un wiki est aussi disponible avec le même compte ! N'oubliez pas de remettre votre avatar, bon surf !
Pour plus d'informations, consultez ce post.

#1 09 May 2004 12:19:39

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

un programme inutile...

Un de plus ..
ce week end comme j'avais rien a foutre (juste un Dm de math et un exposé en anglais lol) g fait un ti programme pour notre chère g100...

En fait c'était pour en apprendre un peu plus et en le fesant g apris comment marchent les TSR (terminate and stay resident).

voila le code :

Code:

void interrupt newint1C()
{
    asm int 0xD9;    //apelle l'int D9 (vraie int 1C)
    asm push ax;    //sauvegarde ax
    asm xor al,al;    //met 0 dans ax
    asm in al,1Dh;    //récupère les secondes actuelles
    asm cmp al,30;    //compare avec 30
    asm jne fin;    //si c'est different saute à fin
    asm int 51h;    //sinon eteint la calto!
fin:
    asm pop ax;    //restaure ax, il faut garder à l'esprit que c'ette interuption va être exécutée pendant que d'autres programmes tournent il faut donc garder le contenu des registres intacts
}


void main()
{
    int adr1C_segment,adr1C_offset,adrD9_segment,adrD9_offset;

    //sauvegarde le vect de l'int 1Ch
    asm xor ax, ax;
    asm mov es, ax;
    asm mov ax, 0x001C * 4;    
    asm mov di, ax;
    asm mov ax, es:[di];
    asm mov adr1C_segment, ax;
    asm mov ax, es:[di + 2];
    asm mov adr1C_offset, ax;
 
    //la mé ds l'int D9h
    asm xor ax, ax;
    asm mov es, ax;
    asm mov ax, 0x00D9 * 4;    
    asm mov di, ax;
    asm mov ax, adr1C_segment;
    asm mov es:[di], ax;
    asm mov ax, adr1C_offset
    asm mov es:[di + 2], ax;

    //remplace l'int 1Ch par la notre
    _dos_setvect(0x1C, newint1C);

    asm mov ah,0x31;    //fonction 31h
    asm int 21h;    //l'histoire du TSR : termine le programme sans libérer la mémoire allouée à celui-ci ce qui permet de garder notre interruption intacte pendant l'execution de d'autres programmes.
}

voila! vous avez surrement compris ce qu'il fait : il éteint la calculatrice chaque minute à la 30ème seconde.
pratique pour faire un farce!

pour ce petit bout de code je me doit de citer X-th pour m'avoir ouvert les yeux sur certaines conneries que j'avais faite et surtout pour avoir été patient!lol et a mastermage car l'idée du départ m'est venue de son Hardware counter

je pense que ce petit bout de code peut-être utile pour d'autres choses que des farces c pour sa que je le met la ...

voici l'exe :

P.S. : pour l'instant tout à l'air de marcher à part Touche....


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#2 09 May 2004 12:40:14

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Re: un programme inutile...

oué...
un reboot de la caltos et ca annule tout...
la farce se finis vite car en général qd ya un prob la plupart se jette sur le P derrière la caltos


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#3 09 May 2004 13:08:27

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: un programme inutile...

Interressant comme technique, je vois pas trop d'applications super utiles pour le moment mais ca peut toujours venir lol

Sinon vu les instructions en asm y'aurait moyen de se passer des fonctions _dos_setvect et compagnie: quelqu'un aurait-il les instructions asm pour remplacer l'int 1C par newint1C() (avec un ptr sur fonx sans doute) ? Ca éviterait les appels à ces fonctions...  smile


Pensez à surveiller mes releases wink

Hors ligne

 

#4 09 May 2004 14:01:19

Swifter
Programmeur Graph100
Lieu: Niort (79)
Date d'inscription: 06 Aug 2002
Messages: 980
Site web

Re: un programme inutile...

bin moi j'avais essayé de les remplacer...
je crois que j'avais réussi a remplcaer _dos_setvect mais pas _dos_getvect a cause du retour de type interrupt ... enfin un truc dans le genre, ca fait longtemps


Swifter, avec un T, n'attrapes pas la poussière mais toutes les remarques débiles :mrgreen:
              ** Swifter68@hotmail.com **

Hors ligne

 

#5 09 May 2004 14:30:02

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

je lé laiC passque je n'arrivait pas à le faire justement ...

je voulais faire sa :

Code:

    asm xor ax, ax;
    asm mov es, ax;
    asm mov ax, 0x001C * 4;    
    asm mov di, ax;
    asm mov ax, ...................;
    asm mov es:[di], ax;
    asm mov ax, offset newint1C
    asm mov es:[di + 2], ax;

mais je ne sais pas quoi mettre à la place des .......
(j'ai des connaissances assez limitées en asm)


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#6 09 May 2004 14:42:23

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

petite modification :
ds la doc de TC3 il y a marqué qu'en utilisant le mot clé interrupt, tout les registres sont sauvés au Dbut et restorés à la fin (et qu'elle se termine par un iret)
donc pas besoin du push ax et du pop ax

pour l'histoire du _dos_setvect(0x1C, newint1C); ,le fait de l'écrire entièrement en asm permetrait de faire passer sa taille d'environ 4ko à quelque 100ènes d'octets ... ce qui pour un programme résident en mémoire est une bonne chose ...


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#7 10 May 2004 13:01:41

mastermage
Magicien G100
Lieu: Charleville-Mézières,Compiègne
Date d'inscription: 31 Jan 2002
Messages: 1008

Re: un programme inutile...

Code:


void setvect (void interrupt (*fonction)(void),int vecteur)
{

    asm {
        xor ax, ax
        mov es, ax ; es = 0
        mov di, vecteur
        shl di, 2 ; di = vecteur * 4
        mov ax, fonction
        mov es:[di], ax
        mov ax, cs
        mov es:[di+2], ax
    }

}

ce genre de chose ca devrait fonctionner, non ? (non testé et fait a l'arrache sur demande de f4kill)

Hors ligne

 

#8 10 May 2004 13:46:47

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

je V tester sa si ma calto veut bien remarcher correctement!
(tout à l'heure g fé mumuse à Dsactiver pas mal d'interruptions p voir se que sa fait ... et maintenant me retrouve avec mon vieu menu et le même bug qu'après avoir tesT linux pour g100 : mes lecteurs son décalés) ex : il faut que je mette LINL.EXE sur le N: si je l'appelle ds une icone sur le lecteur :?  pas cool


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#9 10 May 2004 14:33:32

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

rectification ... il faut que je le mette sur les lecteurs M ET N ......
sinon au prochain reboot sa me dit :Not ready error reading drive M abort, Retry, Fail?
vive la logique ... bon je V continuer a bidouiller dans tout les sens pour voir si sa remarche....
si g pas ma calto en état de marche pour demain (sans mes jeux quoi) je V me faire chier moi !  roll


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#10 11 May 2004 13:17:41

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: un programme inutile...

un bon ti reset de la ram entière, et ça ira mieux lol
Style celui du menu constructeur lol


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#11 11 May 2004 15:03:56

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

nan
c'était aprés le reset sa  :mrgreen:
par contre g rempli tout les lecteurs de vide (enfin presque juste un ti prog) et maintenant c bon g retrouV mes 6 lecteurs


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#12 11 May 2004 15:53:43

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

bon ba la fonction à mastermage ne marche pas!
(même après correction (le segment et l'offset sont inversés))
...


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#13 12 May 2004 15:44:15

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

g besoin des pros de l'asm ....
(passke moi je suis qu'un pauvre débutant lol)

Code:

        ORG 100h
        
start:  jmp install

newInt1C:
        pushf
    push ax
    
    int 0xD9;
    
    xor al,al;
    in al,1Dh;
    cmp al,30;
    jne fin;
    int 51h;
fin:    
    pop ax
    popf
    IRET

dat:    
    adr1C_segment dw 0
        adr1C_offset dw 0
            
install:
    ;sauvegarde le vect de l'int 1C
    xor ax, ax
    mov es, ax
    mov ax, 0x001C * 4    
    mov di, ax
    mov ax, [es:di]
    mov [adr1C_segment], ax
        mov ax, [es:di + 2]
    mov [adr1C_offset], ax

    ;la mé ds l'int D9
    xor ax, ax
    mov es, ax
    mov ax, 0x00D9 * 4    
    mov di, ax
    mov ax, [adr1C_segment]
    mov [es:di], ax
    mov ax, [adr1C_offset]
    mov [es:di+2], ax

        ;mé la nvle ds l'int 1C
    xor ax, ax
    mov es, ax
    mov ax, 0x001C * 4    
    mov di, ax
    mov ax, cs
    mov [es:di], ax
    mov ax, newInt1C
    mov [es:di+2], ax

    mov    dx,install
    int    27h
            
;    mov ah,0x31
;    int 21h

sa marche pas ... pourtant g bo le lire et le relire je voi rien qui va pas ...
(sa freeze)

(assemblé avec FASM mais pour que sa marche avec NASM c pas trés compliqué)


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#14 12 May 2004 15:53:12

ymorgan
Membre
Date d'inscription: 10 Apr 2004
Messages: 35

Re: un programme inutile...

l'adresse SEG:OFF doit être mise en little endian c'est à dire poids faible en tête donc l'offset avant le segment.

mov ax, [adr1C_segment]
mov [es:di], ax
mov ax, [adr1C_offset]
mov [es:di+2], ax

=>

mov ax, [adr1C_segment]
mov [es:di+2], ax
mov ax, [adr1C_offset]
mov [es:di], ax

Hors ligne

 

#15 13 May 2004 13:47:13

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

mais dans mon premier programme sa marche très bien sa!


[edit]
Ba si sa marche!!!
Bravo! et merci bcp!

mais c bizarre parceque dans le prog en C sa marche dans l'autre sens ...


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#16 13 May 2004 15:47:23

ymorgan
Membre
Date d'inscription: 10 Apr 2004
Messages: 35

Re: un programme inutile...

dans le prog en C ca marche parce qu tu te sert des variables uniquement pour déplacer un vercteur d'interruption et tu appel _dos_setvect pour installer la nouvelle.
dans ton exemple en ASM tu fait toi même l'instal en inversant les 2 valeurs.

(en fait y'a que la fin qui buggait, le reste c'est une histoire de noammge de variable.)

Hors ligne

 

#17 13 May 2004 16:22:52

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

a oui je vien de comprendre
en fait je m'était l'offset dans la variable segment et vice versa mais au final sa marchai...

ba en tout k c cool maintenant ia plus que 32octets qui restent en mémoire ... (o lieu de 4000 et dés poussière)


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#18 14 May 2004 16:49:54

Didj
Programmeur Graph100
Lieu: Paris
Date d'inscription: 09 Jun 2003
Messages: 192
Site web

Re: un programme inutile...

on devrait faire des progs inutiles plus souvent  lol


Auteur de : Spacewar v1.02, Diablo v0.12

=> Didj <=

Hors ligne

 

#19 15 May 2004 11:23:40

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: un programme inutile...

lol

en fait c pas totalement inutile .. pour moi en tout cas puissque dans l'histoire g apris des truc et je me suis remi a l'asm...
d'ailleur g déjà entrepris 2 ou 3 trucs en asm la ...


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr