![]() |
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:
In den letzten beiden Zuweisung liegt mein Prob. |
Re: Assembler mit Delphi verknüpfen
In Windows kann man keine Diskette mehr via Int 13h ansprechen.
Verwende stattdessen:
Delphi-Quellcode:
Dabei sollte beachtet werden, dass nur 512 Byte Blöcke geschrieben werden können an 512 Byte Grenzen.
TFileStream.Create('\\.\A:', fmOpenRead or fmShareDenyNone);
|
Re: Assembler mit Delphi verknüpfen
Zitat:
|
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.
|
Re: Assembler mit Delphi verknüpfen
Zitat:
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. |
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).
|
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.
|
Re: Assembler mit Delphi verknüpfen
Guckst du im großen OpenSource-Fundus des Kollegen Luckie:
![]() |
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? |
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. |
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