Avatar billede hobz Nybegynder
04. februar 2006 - 21:48 Der er 11 kommentarer og
1 løsning

DOS compiler i IDE?

Findes der en DOS compiler, eller en compiler der kan compile programmer til DOS, i et IDE til win32?
Har prøvet med Codeblocks, og brugt Borlands Compiler 5.5, men den duer ikke. Jeg vil gerne kunne foretage interrupts, benytter dem til VGA-grafik.
Findes der et grafikmodul til VGA, så man ikke selv skal skrive sine routines til setPixel osv. i pseudo-assembler?
Avatar billede arne_v Ekspert
04. februar 2006 - 21:54 #1
jeg mener at du kan downloade Turbo C V1 fra Borland

og med lidt tilpasning kan den sikkert kaldes fra C++BuildeX/dev-cpp/code::blocks
Avatar billede bertelbrander Novice
04. februar 2006 - 22:10 #2
Turbo C++ kan ganske rigtigt lave dos programmer.
Du kan downloade her:
http://community.borland.com/article/0,1410,21751,00.html
Den kommer med en IDE der også virker under Windows.
Den har graphics.h der kan bruges til at lave low level grafik.

Ellers er der djgpp, der er en gnu port til windows, den kan lave 32bit dos programmer:
http://www.delorie.com/djgpp/
Den har et grafisk bibliotek kalder allegro.

Ellers er der digital mars, en mere moderne kompiler der også kan lave dos programmer:
http://www.digitalmars.com/
Den har en IDE der dog ikke er gratis.
Avatar billede hobz Nybegynder
04. februar 2006 - 22:56 #3
Jeg har installeret digitalmars. Kan man benytte den som standard compiler i Dev-C++, og hvordan?
Avatar billede bertelbrander Novice
04. februar 2006 - 23:23 #4
Det ved jeg ikke, jeg tvivler.
Der er nok større chance for at få den til at virke med code::blocks:
http://www.codeblocks.org/

Ellers er du nok nødt til at bruge makefiler og en standard editor.
Avatar billede hobz Nybegynder
06. februar 2006 - 18:29 #5
Det bliver for mærkeligt.
Jeg kan ikke finde en compiler der både kan håndtere msleep og int86. Hvad gør jeg?
Avatar billede bertelbrander Novice
06. februar 2006 - 20:23 #6
Digital Mars har både msleep (i time.h) og int86 i bios.h og dos.h
Avatar billede hobz Nybegynder
06. februar 2006 - 21:09 #7
Får en Error 42: Symbol Undefined _int86
Avatar billede bertelbrander Novice
06. februar 2006 - 22:07 #8
Du skal bestemme dig for hvilken type program du vil lave (16 eller 32 bit, real protected mode), og fortælle compileren det.

Dette compilerer:
#include <dos.h>
#include <stdio.h>

int main()
{
  union REGS R1, R2;
  int86(0, &R1, &R2);
}
Hvis jeg bruger denne commando linie:
dmc -mx cin.cpp x32.lib

(Det virker naturligvis ikke når jeg forsøger at køre det)
Avatar billede bertelbrander Novice
07. februar 2006 - 00:16 #9
Jeg lavede dette:
#include <dos.h>
#include <stdio.h>

int GetKey()
{
  union REGS R1, R2;
  R1.x.ax = 0x0700;
  int86(0x21, &R1, &R2);
  return R2.x.ax;
}

int main()
{
  int K = GetKey();
  printf("Key: %d %X %c\n", K, K, K);
}

Og compilerer med:
dmc -msdo cin.c ct.obj sds.lib
Så kører det. Programmet venter på en tast og returnerer den.
Avatar billede bertelbrander Novice
07. februar 2006 - 00:27 #10
Glemte at sige at du skal downloade "DOS 16 libraries" fra digital mars hjemmeside.
Avatar billede hobz Nybegynder
07. februar 2006 - 17:39 #11
Mange tak. Fik det til at virke. Dog uden o i -msdo.
Avatar billede hobz Nybegynder
10. juli 2006 - 20:58 #12
luk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester