Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Assembler mit Delphi verknüpfen (https://www.delphipraxis.net/50970-assembler-mit-delphi-verknuepfen.html)

VirusXP 3. Aug 2005 15:11


Assembler mit Delphi verknüpfen
 
Ich hab da mal ne etwas knifflige Frage:
Ich will mit Delphi und dem Interrupt 13h (Disketten- und Festplatteninterrupt) etwas in einem Sektor einer Diskette schreiben, aber hab noch keinen Weg gefunden mein Array (Array[1..512] of Byte) dem Interrupt so zu übergeben das er mir das auf die Diskette zu schreiben.
Auf welche Weise ist es möglich dieses Projekt zu realisieren oder ist es etwa gar nicht zu realisieren?
Vielen dank für jede Hilfe schon mal im Vorraus.

P.S.: Die Anweisungen für den Interrupt sehen wie folgt aus:
  • ah=03h Funktionsnummer zum schreiben auf Disketten
    al = Anzahl der zu schreibenden Sektoren
    ch = Spur auf die geschrieben werden soll
    cl = Erster Sektor der beschrieben werden soll
    dh = Kopf der verwendet werden soll
    dl = Laufwerksnummer (0:A; 1:B; 80h:1.HD; 81h:2.HD)
    es = Segmentadresse des Puffers
    bx = Offsetadresse des Puffers

In den letzten beiden Zuweisung liegt mein Prob.

neolithos 3. Aug 2005 15:14

Re: Assembler mit Delphi verknüpfen
 
In Windows kann man keine Diskette mehr via Int 13h ansprechen.

Verwende stattdessen:


Delphi-Quellcode:
TFileStream.Create('\\.\A:', fmOpenRead or fmShareDenyNone);
Dabei sollte beachtet werden, dass nur 512 Byte Blöcke geschrieben werden können an 512 Byte Grenzen.

choose 3. Aug 2005 16:25

Re: Assembler mit Delphi verknüpfen
 
Zitat:

Zitat von VirusXP
es = Segmentadresse des Puffers

:mrgreen: (ohne Worte)

VirusXP 3. Aug 2005 16:45

Re: Assembler mit Delphi verknüpfen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab ich jetz probiert, aber wenn ich versuch was draufzuschreiben dann gibt er mir Stream write error aus. Anbei der Quelltext.

Olli 3. Aug 2005 16:50

Re: Assembler mit Delphi verknüpfen
 
Zitat:

Zitat von VirusXP
In den letzten beiden Zuweisung liegt mein Prob.

Nein, dein Problem liegt darin, daß du offenbar noch nicht in der Windows-Welt angekommen bist, sondern noch in DOS-Reichen herumschwirrst.

Nur mal als ein paar Hinweise. Auch Segmentregister gibt es noch in 32bit PM, aber dort heißen sie Selektoren und haben eine gänzlich andere Bedeutung. Interrupts kannst du zwar aufrufen, aber nur von einem Treiber und genaugenommen sollte man es von dort aus nicht machen. Windows (NT++) benutzt den int13h sowieso nicht, wäre dir also vermutlich böse, würdest du es tun.

Vielleicht liest du doch erstmal noch ein paar Bücher. Spätestens mit dem Erscheinen von Windows 2000 ist das was du tun willst anderweitig möglich und deine Informationen obsolet.

VirusXP 3. Aug 2005 16:57

Re: Assembler mit Delphi verknüpfen
 
Ich will doch nur 512 kleine Bytes in einen Sektor der Diskette schreiben und auslesen können. Wie gesagt mit Methode TFileStream.Create('\\.\A:', fmOpenReadWrite or fmShareDenyNone) bekomm ich nen Stream write error (s.Quellcode).

VirusXP 3. Aug 2005 17:26

Re: Assembler mit Delphi verknüpfen
 
So am Rande: Wenn ich versuch nur von der Diskette zu lesen, d.h. den ganzen Schreiben-Teil aus meinem Code auskommentier und TFileStream.Create('\\.\A:', fmOpenRead or fmShareDenyNone) aufruf, dann gehts auch net; dann bringt er mir Stream read error.

Olli 3. Aug 2005 18:17

Re: Assembler mit Delphi verknüpfen
 
Guckst du im großen OpenSource-Fundus des Kollegen Luckie:
http://www.luckie-online.de/Programme/DiskImageNT/

BlackJack 3. Aug 2005 18:22

Re: Assembler mit Delphi verknüpfen
 
naja wenn du wirklich in einem bestimmten sektor der diskette schreiben willst (da du von 512 bytes sprichst nehme ich mal an du willst eine bootdiskette oder so erstellen), wirst du mit TFileStream nicht weit kommen, da du meines wissen nach damit nicht bestimmen kannst, wo genau auf der diskette die daten landen. ich wüsste jetzt aber auch nicht wie man unter Win genau einen bestimmten sektor der diskette beschreibt.

zu dem Error mal ne dumme Frage: hast du auch den schreibschutz der diskette rausgemacht?

VirusXP 3. Aug 2005 20:13

Re: Assembler mit Delphi verknüpfen
 
Si senor, der Schreibschutz der Diskette ist und war draussen. Hab se danach formatiert und nochmal versucht, mit gleichem Ergebnis.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz