App DOS en plein écran !? [Pascal] - Programmation
Marsh Posté le 18-04-2001 à 16:53:08
tu veux le faire depuis ton prog obligatoirement ???
parce que sinon un clic droit sur ton exe ... proprietes ... plein ecran ...
sinon *"*je pense*"* qu'un moyen simple est de changer la résolution ... (y'a ptet mieux ... )
au debut de ton prog tu changes en ... oups ... oublié ...
si tu peux inclure de l'assembleur (genre asm ...) c'est tres facile ... (3 lignes)
va bien y avoir un gars qui va te les filler
Marsh Posté le 18-04-2001 à 17:03:34
Comme dit HelloWorld, le plus simple est de créer un raccourci et on édite ses propriétés...
Marsh Posté le 18-04-2001 à 17:08:30
j'aimerai vraiment que le prog se lance en plein écran des qu'on l'execute !!
Il doit bien avoir un moyen Non !?
Marsh Posté le 18-04-2001 à 17:12:50
eh ben change la résolution !!!
ragarde si t'as pas une librairie qui permet ca
t'as quoi comme compilo ??,
sinon 3 lignes d'assembleurs ... tu les veux les 3 lignes
Marsh Posté le 18-04-2001 à 17:18:46
je te les donne quand meme ...
site : http://www.pageasm.com/tutd/base/base4.htm#3
je pense que c'est le mode 00h (mode texte, 25 lignes de 40 caracteres) (mais tu peux passer en 80*25, c'est sympa aussi)
donc:
asm mov ah,0
asm mov al,0 ;ton "numero" de résolution
asm int 10 ;change la resolution
*asm* : la syntaxe de ton compilo pour inclure de l'assembleur
pour les puristes :
asm mov ax,0
Marsh Posté le 18-04-2001 à 17:22:56
Merci HelloWorld !!
j'utilise Turbo Pascal 7 fr
Sinon ton lien marche po
Tu peux me le refaire !? stp
[edit]--Message édité par Doudos--[/edit]
Marsh Posté le 18-04-2001 à 17:40:49
ah ???
ben www.pageasm.com
rubrique assembleur DOS
dans les bases ... les interruptions ... interruptions graphiques ...
t'as essayé
asm mov ax,0
asm int 10
il dit quoi le compilo ???
si ca marche tu te fait une petite fonction ChangeResolution ...
tu déclare des constantes pour les résolutions (RES_40_25 := 0)
et tu les passes à ta fonction qui fait ce petit code assembleur
comme ca t'as un code lisible ... mais bon t'es assez grand !:sol:
Marsh Posté le 18-04-2001 à 17:46:45
ton site marche pas !! (page non dispo)
Sinon va falloir que tu m'expliques comment inclure du code assembleur parce que je m'en sors pas là !!
(je debutes !! fo bien passer par là )
Marsh Posté le 18-04-2001 à 17:57:02
ben en Delphi (c du pascal) il (me semble, c'est loin !) qu'il fallait mettre asm devant mon instruction assembleur pour que ca marche.
donc la devant chaque instruction assembleur essaie de mettre asm
ton compilo c'est de chez Borland c'est ca ??? ca devrait etre pareil alors ...
on utilise la fonction 10 de ton PC (en tres simple hein) qui te permet de changer la resolution de ta carte video
c'est ton PC qui le fait et pas le DOS !!! (c'est dans les entrailles de ta carte video ... )
cette fonction accepte 2 parametres qui sont passé par ... une sorte de variable globale : AX (un registre du processeur)
RHââââ !!! il marche plus le site !!! c pour ca que t'as rien !!!
il marchait y'a 1 heure !!! bah , ca va revenir
et donc ben en parametre tu met 0 pour cette résolution
et donc :
asm MOV AX,0 <= parametre
asm INT 10 <= fonction numero 10 du PC (m'assassinez pas les gars, je fait simple !!!)
bon, ben ...
http://asmbeginer.com/int/10H.HTM
http://asmbeginer.com/emag/asmbe1.txt
http://www.multimania.com/abcp/ref [...] 0fct4fss02
http://www.chez.com/minso/sos.php
http://cldup.multimania.com/vesa2.htm
Marsh Posté le 18-04-2001 à 17:57:05
OK !!
Encore Merci pour tout !!
[edit]--Message édité par Doudos--[/edit]
Marsh Posté le 18-04-2001 à 18:04:47
http://www.ifrance.com/dalsim/ASM3.HTM
Deuxième programme
Cette fois, le programme fait au moins quelque chose de visible. Il affiche un texte, le fameux Hello World. Tout d'abord, voici le fichier texte que vous assemblerez (voir précédent chapitre pour utiliser les programmes).
MOV AX,03h (mode texte 80x25 (13h est le mode 320x200x256)
INT 10h
met ca dans une fonction genre
ChangeResolution(resolution : integer)
begin
asm MOV AX,resolution
asm INT 10
end;
le pascal c'est loin pour moi alors ca doit etre imvomplet
declare ensuite 2 ou 3 constante (je sais pas faire en pascal), genre:
RES_40_20 : integer := 0;
et comme ca t'auras un code pas trop illisible
Marsh Posté le 18-04-2001 à 18:44:58
bon ... va falloir trouver une autre soluce !!
=> Syntax Error !!
g peut etre mal capte comment inclure le code assembleur ...
je sais pas !!
Marsh Posté le 18-04-2001 à 18:57:45
ca serait pas aussi trivial que ca alors
http://www.multimania.com/jmy51/in [...] d%20Pascal
Uses Dos;
Var
{ Déclaration de Regs en tant que ; registres du processeur }
Regs : Registers;
Type Registers = Record
Case Integer of
0 : (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags : Word);
1 : (AL, AH, BL, BH, CL, CH, DL, DH : Byte);
End;
L'accès à Carry Flag (CF) se fait alors de cette façon :
Regs.Flags And Fcarry
L'Assembleur Inline est nettement plus simple d'emploi : il suffit de reprendre son code Assembleur tel quel
Asm
Mov AH, 00h
Int 33h
Cmp AX, 00h
Je @@NotMouse
Mov NbrBoutons, BX
Jmp @@Fin
@@NotMouse: Mov NbrBoutons, 0
@@Fin:
End;
La seule différence réside dans les labels qui doivent être précédés de @@ en Pascal
ben si alors !!!
=> Asm
MOV AX, 00h
INT 10
End;
et voila !!!
Marsh Posté le 18-04-2001 à 19:00:24
j'espere que c bon car la je m'envais !!!
@+
(fait une recherche "assembleur inline turbo pascal" )
Marsh Posté le 18-04-2001 à 20:25:43
Bon ...
ça marche ... à moitié !!
g reussi à inclure ça :
Asm
Mov ah, 00h
Mov al, 13h
Int 10h
End;
Ça revient au meme de faire !??
Asm
Mov ax, 13h
Int 10h
End;
Mais le probleme, c'est que lorsqu'il change la résolution ... je suis plus en mode texte mais en mode graphique donc le texte qu'affichait mon prog n'apparait plus !!
Donc, HelloWorld ... je fais encore appel à toi ...
Merci et @+
[edit]--Message édité par Doudos--[/edit]
Marsh Posté le 19-04-2001 à 10:03:20
Mais tu changes quand de résolution ???
si tu changes apres avoir écrit des trucs faut faire une petite modif pour pas qu'il t'efface l'écran quand il change la résolution.
Sinon, la première ligne de ton programme doit servir à changer la résolution
D'apres ce que j'ai lu hier, les 4 premiers modes sont des modes textes : 0,1,2,3 (0 et 1 : 40*25 ; 2 et 3 : 80 * 25)
le mode 13h est un mode graphique ...
mais il me semble que les fonctions standards d'écriture de texte fonctionnent quand meme ...
quoi qu'il en soit elles fonctionnent apres que t'ai changé la résolution
pour ne pas qu'il t'efface l'écran lors du changement, y'a un bit à positionner ... je sais plus lequel ...
cherche une info genre "preserve bit"
au fait www.pageasm.com refonctionne, il est en francais
il dit d'ailleurs que maintenant c'est :
http://www.pageasm.fr.fm
=> tutoriel DOS - tutoriel de base - interruptions - interruptions graphiques
un autre bon site : ABCP
http://www.multimania.com/abcp/ref [...] int10fct00
AH = 00h
AL = mode vidéo et effacement de l'écran:
00h: texte 40x25, N&B
01h: texte 40x25, 16 couleurs
02h: texte 80x25, N&B
03h: texte 80x25, 16 couleurs
04h: graphique 320x200, 4 couleurs
05h: graphique 320x200, 4 gris
06h: graphique 640x200, 4 couleurs
07h: carte monochrome??
0Dh: graphique 320x200, 16 couleurs (à partir de EGA)
0Eh: graphique 640x200, 16 couleurs (à partir de EGA)
0Fh: graphique 640x350, N&B (à partir de EGA)
10h: graphique 640x350, 16 couleurs (à partir de EGA)
11h: graphique 640x480, 2 couleurs (à partir de MCGA)
12h: graphique 640x480, 16 couleurs (à partir de VGA)
13h: graphique 320x200, 256 couleurs (à partir de MCGA)
Bit 7 à 1 (Ajouter 80h): Ne pas effacer l'écran
Marsh Posté le 19-04-2001 à 10:12:17
??? apparement c'est limité dans la taille les réponse
donc je continue
il suffit de rajouter 80h (80 en hexadecimal,128 en decimal)
donc tu fait
procedure ChangeRes(Resolution : integer);
begin
resolution := resolution + 128;
Asm
Mov AX, resolution
Int 10h
End;
end;
et normalement il t'efface plus l'écran !!!
(AX est sur 16 bits : les 8 à gauche = AH, les 8 à droite = AL)
(comme nous AH=0, eh ben AX c'est pareil que AL)
(sauf que comme AX est sur 16 bits, et que le type integer aussi, ben on est sur que le compilo il gueulera pas :
MOV AL,resolution : il devrait accepter mais tu dois surement avoir un warning comme quoi il y a perte de données ... (pour lui tu met 16 bits dans 8 bits : t'en perts 8 ...)
Marsh Posté le 19-04-2001 à 14:09:15
g fais ce que tu as dit ...
procedure ChangeRes(Resolution : integer);
begin
resolution := resolution + 128;
Asm
Mov AX, 13h
Int 10h
End;
end;
puis plus rien ...
il change meme pas le mode d'affichage, il reste en 80x25 par defaut !!
[edit]--Message édité par Doudos--[/edit]
Marsh Posté le 19-04-2001 à 14:18:41
ben g essaye avec 0Dh puis avec 13h mais il reste en 80x25 tout le temps ...
Marsh Posté le 19-04-2001 à 14:22:23
0Dh ???
pourquoi ???
essaie 0 !!!
ce qui fait 128 une fois dans la fonction ... = 80h ...
Marsh Posté le 19-04-2001 à 14:25:51
euh ... ça change rien !!!
C'est ici que g mis '0Dh' ou '13h' :
Mov AX, 0Dh (ou Mov AX, 13h)
En fait, depuis que je l'ai mis dans une procedure g l'impression que ça n'a aucune action !!
[edit]--Message édité par Doudos--[/edit]
Marsh Posté le 19-04-2001 à 14:30:05
Putain ca y est ca me revient ...
c'est le mode 3 le mode classique ...
mais du coup je me demande si ca va passer en plein ecran ...
essaies :
Mov AX, 131 ;128 + 3
Marsh Posté le 19-04-2001 à 14:30:15
je viens d'essayer ... sans résultat
ok j'essaie ...
[edit]--Message édité par Doudos--[/edit]
Marsh Posté le 19-04-2001 à 14:34:13
alors ... avec ça :
Mov AX, 131 ;128 + 3
Il me signale une syntax error ici (a l'endroit du _) :
Mov AX, 131 ;128_+ 3
Marsh Posté le 19-04-2001 à 14:37:09
ouai ouai ...
le ';' "normalement" en assembleur c'est les commentaires...
vire les ...
=> Mov AX, 131
Marsh Posté le 19-04-2001 à 14:46:44
ca fait rien du tout ???
c'est la faute a windows ...:fou:
va falloir ruser alors ...
Bon ...
ça marche ... à moitié !!
g reussi à inclure ça :
Asm
Mov ah, 00h
Mov al, 13h
Int 10h
End;
en fait ca effacait l'écran ...
mais estce que ca a changé la résolution ???
t'es passé en plein écran ???
Marsh Posté le 19-04-2001 à 14:53:47
Oui lorsque g mis ça direct (sans le mettre dans une procedure)
Asm
Mov Ah, 00h
Mov Al, 13h
Int 10h
End;
il change de resolution (320x200, 256 color) mais g un ecran noir ... puis plus rien ... l'application s'execute mais il n'affiche rien a l'ecran
Marsh Posté le 19-04-2001 à 14:59:34
vivi c'est normal l'écran noir : il a tout effacé
bon ... en fait quand on se trouve en mode 3 (80*25) il semble que windows décide que faut pas executer en plein ecran ...
alors 1° "ruse" :
fait un changement bidon de resolution au debut du programme et revient en mode 3
windows il fait quoi, il te le laisse en plein ecran ou il te le remet en fentre ???
=> au tout debut de ton programme :
Asm
Mov Ah, 00h
Mov Al, 00h
Int 10h
Mov Al, 03h
Int 10h
End;
Marsh Posté le 19-04-2001 à 15:19:04
hum ...
va falloir passer en mode graphique alors ...
80*25 semble etre 640*350
10h: graphique 640x350, 16 couleurs (à partir de EGA)
essai de passer dans ce mode au debut et regarde si ton programme affiche du text ...
Asm
Mov Ah, 00h
Mov Al, 10h
Int 10h
End;
Marsh Posté le 19-04-2001 à 15:27:45
bah oui ... faut rajouter 128 !!!
=>
Asm
Mov AX, 138
Int 10h
End;
bon j'espere que c'est bon car fo que j'y aille et de toute facon je suis à court d'idee apres
Marsh Posté le 19-04-2001 à 15:36:04
Je n'ose pas y CROIRE !!!!
Ça MARCHE !!!
MERCI BEAUCOUP Hello
je desesperais là ...
C'est génial MERCI ENCORE !!
Marsh Posté le 19-04-2001 à 17:28:33
Ha !!! Enfin !!!:sweat:
Ben à nous 2 on aura créé un gros topic !!!
en conclusion : Assembleur POWAAAAAAAAAAAAAAAAAA !!!!:hap::love:
Marsh Posté le 18-04-2001 à 16:40:09
Comment faire pour que l'application crée se lance en Plein Ecran lorsqu'on l'execute !?