|
Dernière réponse | |
---|---|
Sujet : [Pascal] App DOS en plein écran !? | |
HelloWorld | Ha !!! Enfin !!!:sweat:
Ben à nous 2 on aura créé un gros topic !!! :lol: en conclusion : Assembleur POWAAAAAAAAAAAAAAAAAA !!!!:hap::love: |
Aperçu |
---|
Vue Rapide de la discussion |
---|
HelloWorld | Ha !!! Enfin !!!:sweat:
Ben à nous 2 on aura créé un gros topic !!! :lol: en conclusion : Assembleur POWAAAAAAAAAAAAAAAAAA !!!!:hap::love: |
Doudos | Je n'ose pas y CROIRE !!!!
Ça MARCHE !!! MERCI BEAUCOUP Hello ;) je desesperais là ... C'est génial MERCI ENCORE !! |
HelloWorld | 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 :) |
Doudos | PLEIN ECRAN ..... noir :sweat: |
HelloWorld | 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; |
Doudos | il reste en 80x25 |
HelloWorld | 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; |
Doudos | 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 :( |
HelloWorld | ca fait rien du tout ???
c'est la faute a windows ...:fou: :gun: 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 ??? |
Doudos | :lol:
toujours pas :cry: |
HelloWorld | ouai ouai ...
le ';' "normalement" en assembleur c'est les commentaires... vire les ... => Mov AX, 131 |
Doudos | alors ... avec ça :
Mov AX, 131 ;128 + 3 Il me signale une syntax error ici (a l'endroit du _) : Mov AX, 131 ;128_+ 3 |
Doudos | je viens d'essayer ... sans résultat :(
ok j'essaie ... [edit]--Message édité par Doudos--[/edit] |
HelloWorld | 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 |
HelloWorld | T'as essayé
Mov AX, 128 ??? |
Doudos | euh ... ça change rien !!! :??: :sweat:
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] |
HelloWorld | 0Dh ???:??:
pourquoi ??? essaie 0 !!! ce qui fait 128 une fois dans la fonction ... = 80h ... |
Doudos | ben g essaye avec 0Dh puis avec 13h mais il reste en 80x25 tout le temps ... |
HelloWorld | resolution, tu lui as donné quoi comme valeur ? |
Doudos | 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] |
HelloWorld | ??? apparement c'est limité dans la taille les réponse :P
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 ...) |
HelloWorld | 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 |
Doudos | un chtit up avant d'aller me pieuter :sleep: |
Doudos | Bon ...
ça marche ... à moitié !! :sweat: 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] |
HelloWorld | j'espere que c bon car la je m'envais !!!
@+ :) (fait une recherche "assembleur inline turbo pascal" ) |
HelloWorld | 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 !!! |
Doudos | bon ... va falloir trouver une autre soluce !! :(
=> Syntax Error !! :cry: g peut etre mal capte comment inclure le code assembleur ... je sais pas !! |
HelloWorld | 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 :) |
Doudos | OK !!
Encore Merci pour tout !! ;) [edit]--Message édité par Doudos--[/edit] |
HelloWorld | 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 :P |
Doudos | ton site marche pas !! :cry: (page non dispo)
Sinon va falloir que tu m'expliques comment inclure du code assembleur parce que je m'en sors pas là !! :sweat: (je debutes !! fo bien passer par là :)) |
HelloWorld | 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: |
Doudos | 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] |
HelloWorld | 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 |
HelloWorld | 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 |
Doudos | j'aimerai vraiment que le prog se lance en plein écran des qu'on l'execute !! :cry:
Il doit bien avoir un moyen :??: Non !? :sweat: |
JPA | Comme dit HelloWorld, le plus simple est de créer un raccourci et on édite ses propriétés... |
HelloWorld | 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 ;) |
Doudos | Comment faire pour que l'application crée se lance en Plein Ecran lorsqu'on l'execute !? |