Dateizugriffe unter DOS (ASM)

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Antworten
Brueggi

Dateizugriffe unter DOS (ASM)

Beitrag von Brueggi »

Hallo DOS-Gemeinde :-)

Da ich recht wenig Assembler unter bzw. für MS-DOS mache, und meinen mini DOS-Emu für BonnyDOS/286 erweitern möchte, hier eine Frage: Wie sieht denn ein gängiger Code für das Öffnen/Lesen von Files unter MS-DOS aus (im Zusammenhang des Nachladens) ? Hat hier jemand mal ein paar Schnipsel Code?
Benutzeravatar
matze79
DOS-Gott
Beiträge: 7910
Registriert: So 9. Sep 2012, 20:48

Re: Dateizugriffe unter DOS (ASM)

Beitrag von matze79 »

Schau dir doch mal direkt rxDos an, ist komplett im Sourcecode verfügbar.

http://rxdos.sourceforge.net/
https://www.shadowcircuit.de - Die kleine Community rund um Retro Computing
https://www.retroianer.de
Benutzeravatar
zatzen
DOS-Guru
Beiträge: 518
Registriert: Di 17. Apr 2012, 05:10
Wohnort: bei Köln
Kontaktdaten:

Re: Dateizugriffe unter DOS (ASM)

Beitrag von zatzen »

Ich weiss nicht ob es dich interessiert aber ich habe schonmal rein aus Interesse die BIOS-Funktionen
benutzt um beispielsweise Sektorenweise zu lesen oder zu schreiben.
mov ax, 13h
int 10h

while vorne_frei do vor;
Brueggi

Re: Dateizugriffe unter DOS (ASM)

Beitrag von Brueggi »

Die Möglichkeiten des BIOS sind mir hier zu begrenzt. Ich habe einen kleinen Relocator geschrieben, der einer EXE-Datei vorangestellt wird. Neben dem Relocator enthält das kleine Progrämmchen auch noch ein paar MS-DOS-Funktionen. Somit lassen sich MS-DOS-Programme (sehr beschränkt) unter BDOS starten. Da aber häufig nachgeladen wird, interessiert mich, welche Funktionen hierzu generell verwendet werden. Dann könnte ich diese Datei-Funktionen noch in den Relocator integrieren und auf die Funktionen meines eigenen DOS umlenken. Ich erhoffe mir so eine größere Anzahl von MS-DOS-Programmen, die man so unter BonnyDOS ausführen kann.
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 239
Registriert: Di 10. Aug 2010, 15:21

Re: Dateizugriffe unter DOS (ASM)

Beitrag von oDOSseus »

Also ich weiß nich ganz ob ich dich richtig verstanden habe, ist es richtig dass du:
  • Eine Datei lesen willst
  • Den Inhalt in die RAM laden willst
  • Dann den Code den du grad geladen hast laufen lassen willst (hineinspringen)
?

Dateilesen unter DOS ist nich sehr schwierig, ich habe in meinem Game Of Life quelltext unten ein paar Funktionen drin, die genau das tun. Vielleicht hift der dir. fopen und fget_ln hab ich die genannt.

Einen Inhalt in die RAM laden ist halt trivial unter DOS. Die Frage ist, wie DOS Programme generell lädt

Dann dahinspringen ist komplexer, da nicht ganz klar ist, wo die startadresse ist. Vermutlich byte 0, aber dies ist die gleiche Frage wie oben.
Brueggi

Re: Dateizugriffe unter DOS (ASM)

Beitrag von Brueggi »

Vielen Dank! Auf deinen Source bin ich noch gar nicht gekommen :-)

Also das Laden einer Datei (eine EXE) und das hineinspringen geht ja bereits, so ist es ja überhaupt erst möglich, Turbo Pascal-Programme unter BDOS und GOS zu nutzen. Mir geht es jetzt primär darum, bereits fertige Programme (bei denen man eben nicht den Source hat) laufen zu lassen. Auch das geht zum Teil, aber z. B. nur, wenn das Programm nichts nachladen (oder speichern) muss. Daher möchte ich den Mini-DOS-Emulator etwas erweitern - um die gängigen Datei-Funktionen von MS-DOS. :-)
Benutzeravatar
oDOSseus
LAN Manager
Beiträge: 239
Registriert: Di 10. Aug 2010, 15:21

Re: Dateizugriffe unter DOS (ASM)

Beitrag von oDOSseus »

Die interrupts die du dann bereitstellen müsstest währen die von vom INT $21 die sich mit Dateioperationen beschäftigen. Die sind sehr unkomplex. Eigentlich das typische Zeug, das man auch in C findet: Öffnen, Stück lesen, Aktuelle Position in Datei verschieben, schließen, speichern.
Benutzeravatar
matze79
DOS-Gott
Beiträge: 7910
Registriert: So 9. Sep 2012, 20:48

Re: Dateizugriffe unter DOS (ASM)

Beitrag von matze79 »

Brueggi:
http://www.heise.de/newsticker/meldung/ ... 54723.html

MS-Dos 2.0 Sourcecode ist veröffentlicht seit einiger Zeit.
Vieleicht hilft das auch was.
https://www.shadowcircuit.de - Die kleine Community rund um Retro Computing
https://www.retroianer.de
Antworten