Toon posts:

[C++/ASM] Kan functie in headerfile niet vinden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een functie nodig in C++ die in de header file dos.h zou moeten zitten, genaamd MK_FP. De dos.h file is aanwezig maar ik krijg de volgende foutmelding:

Call to undefined function 'MK_FP'

Weet iemand wat ik fout doe, of of er verschillende versies zijn van deze header file? Ik ben een redelijk newbie in C++, dus het kan goed dat ik iets over het hoofd zie. Andere header files doen het wel en m'n settings kloppen allemaal. Ik compile met de Borland C++ Compiler versie 5.5.

  • whoami
  • Registratie: December 2000
  • Laatst online: 06:24
MK_FP, wat doet dat spul?

https://fgheysels.github.io/


  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Make far pointer, oftewel:
code:
1
#define MK_FP(seg,off) ((void far *)(((unsigned long)(seg) << 16)|(unsigned)(off)))

Yo dawg, I heard you like posts so I posted below your post so you can post again.


Verwijderd

Topicstarter
Ja, dat is de bedoeling, maar kun je me iets meer info geven dan die regel code (waar ik als newbie niet alles van begrijp :? ) ????

Kun je me vertellen of je weet hoe ik dit kan fixen / wat er aan de hand is, of hoe ik dit zelf moet bouwen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 09 januari 2002 13:25 schreef jRobert het volgende:
Ik compile met de Borland C++ Compiler versie 5.5.
is dat geen windows compiler? Zo ja: dan gaat het sowieso al niet werken, omdat je in 32 bits protected mode niet met segment/offset pairs werkt zoals je dat in 16 bit real mode doet

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Op woensdag 09 januari 2002 16:04 schreef OiSyN het volgende:

[..]

is dat geen windows compiler? Zo ja: dan gaat het sowieso al niet werken, omdat je in 32 bits protected mode niet met segment/offset pairs werkt zoals je dat in 16 bit real mode doet
thnx OiSyn, dat vermoeden begon ik al te krijgen... *D

weet jij misschien met welke compiler ik dan het beste kan werken als ik inline assembler wil gebruiken?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 09 januari 2002 19:03 schreef jRobert het volgende:

[..]

thnx OiSyn, dat vermoeden begon ik al te krijgen... *D

weet jij misschien met welke compiler ik dan het beste kan werken als ik inline assembler wil gebruiken?
je hebt natuurlijk djgpp, een gratis 32 bits protected mode DOS development omgeving die gebruik maakt van de gnu compiler (gcc) en linker (ld). Die ondersteund inline assembly, maar wel in AT&T syntax (is irritant), maar als je nasm download dan kun je wel externe asm filetjes maken die heel makkelijk te linken zijn met djgpp
ter illustratie: quake is gemaakt in djgpp :)

en ik geloof dat Borland C++ 4.0 nog 16 bits dos programma's kan compilen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op woensdag 09 januari 2002 13:44 schreef jRobert het volgende:
Ja, dat is de bedoeling, maar kun je me iets meer info geven dan die regel code (waar ik als newbie niet alles van begrijp :? ) ????
Kun je me vertellen of je weet hoe ik dit kan fixen / wat er aan de hand is, of hoe ik dit zelf moet bouwen?
Die code is bedoeld om een pointer naar een geheugen address te laten verwijzen. Bijvoorbeeld als je een integer wilt lezen op address 4000h:6666h of zo dan doe je
int *ptr = MK_FP(0x4000, 0x6666); Zo zal FP_SEG(ptr) dan 0x4000 teruggeven omdat 0x4000 hier het segment is
(16-bit: segment:offset).
Borland 5.5 is idd een 32-bit compiler waarbij gebruikt wordt gemaakt van selector:offset (linear geheugen adressen). Zoals hierboven al werd gezegd is DJGPP een erg goede compiler maar deze is wel protected mode (en maakt dus gebruik van 32-bit geheugen adresseringen). Ik geloof dat je Turbo C++ 2.0 gratis kunt downloaden van borland maar dat weet ik niet zeker. Is in ieder geval 16-bit.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op woensdag 09 januari 2002 22:16 schreef 4of10 het volgende:

Zoals hierboven al werd gezegd is DJGPP een erg goede compiler maar deze is wel protected mode (en maakt dus gebruik van 32-bit geheugen adresseringen)
en omdat het nog steeds een DOS omgeving is heb je in dgpp fijn van die functies waarmee je in DOS geheugen kan lezen/schrijven (en je kunt zelfs gewoon near pointers gebruiken voor DOS geheugen), daarom stelde ik het ook voor (zijn programma zal er idd niet mee compilen, maar als ie wat aanpassingen doet moet het geen probleem zijn)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1