[DOS C] registers terug krijgen

Pagina: 1
Acties:

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 08-06 11:02
Hallo allemaal

Ik wil onder dos dingen met het netwerk gaan doen.
Daarvoor wil ik een ftp packet driver gebruiken.
Dit heeft trouwens niets met ftp direct te maken, het is een driver die packets data kan versturen/ontvangen over het netwerk met dos.
Het versturen van packet is geen probleem maar het ontvangen ben ik nog niet uit.
Bij het openen van de driver moet je het adres van de receive functie geven.
Als er een packet komt wordt deze functie aangeroepen met een far call.
Echter, de segmenten als DS, ES en SS worden niet gezet als hoe ze moeten staan voor mijn programma.
Weet iemand of er een standaard iets in borland C voor dos zit?
Of anders misschien hoe dit in microsoft C voor dos zou moeten of een andere truuk die mij verder kan helpen.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22-08 01:56
Ik denk dat je er niet aan ontkomt om wat assembly toe te voegen, om je registers correct terug te zetten (en dan moet je ze ook eerst opslaan).

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Standaard voor wat? Waar heb je het over? En wat is je vraag?

We adore chaos because we like to restore order - M.C. Escher


  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 08-06 11:02
Vraag is een beetje vaag geloof ik, nog ff kleine uitleg dan van wat er gebeurt :

- IRQ wordt gegeven door de netwerkkaart.
- Netwerk kaart driver hangt aan de IRQ van de kaart en komt dus in actie.
- Driver ziet dat mijn programma deze packet wilt hebben.
- Driver doet een far jmp naar de functie van mijn programma.
- Mijn programma kan niet bij de globalen variabelen van zichzelf omdat DS, ES en SS niet goed staan.

Waarschijnlijk moet iets als BP enzo ook goed gezet worden.
Assembly vind ik niet erg, juist een uitdaging en ik weet ook redelijk wat er gebeurt dus dat moet te doen zijn.
Ik denk dat ik iets heb bedacht, moet ik nog ff controleren of dat werkt.
Namelijk een interrupt handler, deze kan dacht ik wel bij de variabelen omdat die wel de registers terug zet, alleen moet ik dan wel uitkijken omdat deze ervanuit gaat dat de flags ook op de stack staan, dus die moet ik er dan zelf op zetten denk ik.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 08-06 11:02
Het is niet meer nodig :)
Tijdens het zoeken op GoT hoe ik ookalweer een interrupt handler moest maken kwam ik
[rml][ C++] DOS Sockets[/rml]
tegen, een library voor onder dos die een packet driver gebruikt om sockets te implementeren.
Wat ik net nodig had en eigenlijk zelf wou schrijven omdat ik dacht dat het toch niet bestond :)

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Gelukkig :) Mijn dos tijd met interrupthandlers is een beetje te lang geleden...

We adore chaos because we like to restore order - M.C. Escher

Pagina: 1