OVH Cloud OVH Cloud

SVGA en Turbo C DOS

3 réponses
Avatar
Arnaud
Salut à tous


Langage & OS : Turbo C Borland 1.0 sous DOS

J'aimerai pouvoir passé en Super VGA , surtout au niveau des couleurs avec
TURBOC Borland sous DOS . C'est à dire pouvoir afficher au moins 256
couleurs en 640x480 voir plus , et enventuellement pouvoir passé en 800 x
600 x 256 couleurs ou plus

J'ai déjà essayer des drivers vidéos BGI Borland SVGA téléchargés sur le web
avec succès mais alors impossible de faire apparaître la souris ( gérée par
l'interruptions 0x33 ) , elle n'apprêt plus à l'écran :o(

Rien sur les moteurs de recherches ni sur le site officiel Borland .

L'un d'entre vous aurai il une solution ? En espérant qu'il reste quelque
programmeur de Turbo C DOS dans la monde ;o)


Arnaud

3 réponses

Avatar
KaosVoyager
salut,

à ma connaissance, les BGI de Borland ne géraient
pas le SVGA, mais visiblement non..
Je peux te passer la méthode pour ce faire, mais
en mode VESA uniquement.
Faut que je retrouve une .lib compilé d'après
les super sources du génial FRACTINT.
Pour ta souris, elle fonctionne, mais ne peut s'afficher
ds ce mode. En fait tu ne la vois pas, car l'adresse
video ou pointe ta carte n'est pas la même en mode
SGVA qu'en mode terminal.
De plus, en mode terminal, c'est un octet, en SVGA,
c'est le nombre d'octet necessaire à son affichage.
Donc, même si tu la voyais, tu verrais un tt petit pixel ...!
Il faut donc que tu la gères toi même.
Une question : pourquoi développes tu avec Turbo C 1.0 ?

a+


"Arnaud" a écrit dans le message de
news:3ff1a3ca$0$6978$
Salut à tous


Langage & OS : Turbo C Borland 1.0 sous DOS

J'aimerai pouvoir passé en Super VGA , surtout au niveau des couleurs avec
TURBOC Borland sous DOS . C'est à dire pouvoir afficher au moins 256
couleurs en 640x480 voir plus , et enventuellement pouvoir passé en 800 x
600 x 256 couleurs ou plus

J'ai déjà essayer des drivers vidéos BGI Borland SVGA téléchargés sur le


web
avec succès mais alors impossible de faire apparaître la souris ( gérée


par
l'interruptions 0x33 ) , elle n'apprêt plus à l'écran :o(

Rien sur les moteurs de recherches ni sur le site officiel Borland .

L'un d'entre vous aurai il une solution ? En espérant qu'il reste quelque
programmeur de Turbo C DOS dans la monde ;o)


Arnaud




Avatar
Arnaud CLERGET
Merci , je ne sos âs assez fort pour gerer moi meme une souris snas
l'interuption 0x33 .


Une question : pourquoi développes tu avec Turbo C 1.0 ?



Parceque c'ets ce que j'ai apris à l'ecole , en BTS Informatique
Indistrielle il y a une 10 ene d'années . Et j'ai beaucoup de mal pour
evoluer vers le C/C++ Wiondows . On disait au debut que c'etait simplifié ,
en realité nonb , c'est plus complexe meme si les interface graphique sont
facile à gerer en Visual par exemple .

Mais je me documente pas mal pour essayer d'evoluer vers le C sous windows
tout en douceur .
Avatar
Kaos Voyager
Yo.
Voilà la procédure.
Tu places ta résolution d'écran dans sxdots et sydots ;
mlb et mrb te renvoie les clicks boutons
mhmove et mvmove te donne la position
Tu passes toujours par l'INT33, y'a pas d'autre soluce à
ma connaissance.
Pour afficher ta souris, tu l'affiches toi même.
(il faut que tu traduises les valeurs renvoyées
par la fonction en données graphiques,
tout simplement, et tu les affiches à l'écran en mode graphique
évidemment)
Faut tout faire évidemment (afficher, cacher), mais c'est
un bon exercice.
PS : merci à l'équipe de fractint à partir duquel j'avais
réutilisé pas mal de solution ; la partie asm a été simplifiée.
Les tabutations ont sautés, sorry, faut remettre tout ça pour
être propre, sinon ton interpréteur asm risque de pas fonctionner.
Par contre, je sais pas si tu peux faire des "call asm"
en v1.0 de Borland. Passe en v3.0, c'est pareil.

Cdt,

---TOP OF DATA------------------------------------------
#include <DOS.H>

extern int sxdots;
extern int sydots;

int mlb;
int mrb;
int mhmove;
int mvmove;

extern int MouseRead(void);


int MouseRead() {

static int mousetime=0;
int change=0;


asm push ds // save DS
asm push es // save ES

asm mov ax,0 // reset ES to BIOS data area
asm mov es,ax // ...
asm mov dx,es:46ch // obtain the current timer value
asm cmp dx,mousetime // skip int 33 to reduce expense
asm jne mnewtime

asm pop es // restore ES
asm pop ds // restore DS

return(0); // return no change

mnewtime:
asm mov mousetime,dx // set mousetime at new timer value
asm mov ax,03h // get button status
asm mov bx,0
asm int 33h
asm cmp bx,01h // left button ?
asm je lbpush // Yes, check if lb is changed
asm cmp mlb,0
asm je chkrb
asm mov mlb,0
asm add change,1
asm jmp chkrb
lbpush:
asm cmp mlb,1 // allready set ?
asm je chkrb // Yes, check rb
asm mov mlb,1
asm add change,1
chkrb:
asm cmp bx,02h // right button ?
asm je rbpush // Yes, check if rb is changed
asm cmp mrb,0
asm je chkmove
asm mov mrb,0
asm add change,2
asm jmp chkmove
rbpush:
asm cmp mrb,1 // allready set ?
asm je chkmove // Yes, check motion
asm mov mrb,1
asm add change,2
chkmove:
asm mov ax,0Bh // get button motion info
asm mov bx,0 // reset bx
asm int 33h
hmove:
asm cmp cx,0 // horiz movement ?
asm je vmove // no, test vertical
asm add change,4 // Ok, set change ret value
asm add mhmove,cx // Add new h_pos
asm mov ax,sxdots
asm dec ax
asm cmp mhmove,ax // mhmove > sxdots-1 ?
asm jle hnotmax // no, test if < 0
asm mov mhmove,ax // set mhmove to the max
asm jmp vmove // now, test vertical
hnotmax:
asm cmp mhmove,0 // mhmove < 0 ?
asm jge vmove
asm mov mhmove,0 // yes, set to 0
vmove:
asm cmp dx,0 // vertical movement ?
asm je endp // no, end proc
asm add change,8 // see comment belove ...
asm add mvmove,dx
asm mov ax,sydots
asm dec ax
asm cmp mvmove,ax
asm jle vnotmax
asm mov mvmove,ax
vnotmax:
asm cmp mvmove,0
asm jge endp
asm mov mvmove,0
endp:
asm pop es // restore ES
asm pop ds // restore DS


return(change); // return change value

}
---BOTTOM OF DATA--------------------------------------

"Arnaud CLERGET" a écrit dans le message de
news:3ff2cbb6$0$6972$
Merci , je ne sos âs assez fort pour gerer moi meme une souris snas
l'interuption 0x33 .


> Une question : pourquoi développes tu avec Turbo C 1.0 ?

Parceque c'ets ce que j'ai apris à l'ecole , en BTS Informatique
Indistrielle il y a une 10 ene d'années . Et j'ai beaucoup de mal pour
evoluer vers le C/C++ Wiondows . On disait au debut que c'etait simplifié


,
en realité nonb , c'est plus complexe meme si les interface graphique sont
facile à gerer en Visual par exemple .

Mais je me documente pas mal pour essayer d'evoluer vers le C sous windows
tout en douceur .