Funktion für OS klappt nicht!!
-
meiner meinung nach müsstest du beim zuweisen der pufferadresse das mit low/hi-word genau vertauschen:
asm mov es, Word Ptr [puffer+2]
asm mov bx, Word Ptr [puffer]ansonsten ist der code auf dem ersten blick ok.
außerdem funzt diese routine nur für disketten und laufwerke mit weniger als 256 zylindern/tracks. die zylinder/track-anzahl kann nämlich bei der CHS-Adressierung bis zu zehn bit groß sein. die oberen 2 bits müssen dann in bit 6 und 7 von CL stehen:// store track into CX and shift by 8 -> bit 8 and 9 in CL
asm Mov Cx,track
asm ShR Cx,8// make that bit 8 and 9 are bit 6 and 7 of CL because in bit 0...5
// we'll store the sector number
asm ShL Cl,6// store the lower 8 bits into Ch
asm Mov Ch,Byte Ptr track// store sector in bits 0...5 (bit 6 and 7 = bit 8 and 9 of track-number)
asm Or Cl,sector(ist jetzt hier nur ein auszug, vollständige read-sector-routine habe ich auch)
cu todo
-
jajaja Ist ja auch nur für Disketten!
ICH benutze Borland C 2.01 einen 16 BIT nur er nimmt kein _asm an also schreib ich asm und es geht genauso gut!
Das mit dem tauschen muss ich mal probieren. Also der puffer wird net aufgefüllt! Das heißt er ist nacher genauso wie vorher!MFG
LordHoto
-
Wie kann ich eigentlich dann Char oder so ein laden?
Wenn dein CODE richtig wäre müsste es bei mir gehen...
-
was meinst du bitteschön mit char-einladen??? das mit der vertauschung muss wirklich so sein, habs mir noch mal angeguckt.
-
Also mein Buffer ist ein CHAR string meinetwegen den schreib ich(auf seinen Sector) jetzt und wenn ich ihn lese müsst er doch dann wieder der gleiche sein oder?
-
ich meine oben einen Sector!! nicht seinen Sektor!!
-
hähhh??? ehrlichgesagt kapier ich nicht, was du willst. auf welchen sector willst du den puffer schreiben bzw. wie kann ein puffer einem sector gehören ("...seinen sector...")
wenn du einen puffer schreibst, ist der inhalt danach immer noch der gleiche. wenn du liest, in den meisten fällen nicht (außer, du hast den buffer schonmal gelesen
cu todo
-
Also ich hab jetzt meinen Puffer 1 :
BYTE puffer1[512] = "...";
BYTE puffer2[512];write_hotof(0,0,1,0,1,puffer1);
read_hotof(0,0,1,0,1,puffer2);dann müssten doch beide 'gleich' sein!!! oder etwa nicht?
read_hotof wurde ja oben schon beschprochen
und der unterschied von read_hotof zu write_hotof wirst du dann
wohl schwer eraten können... einfach stat asm mov ah, 02h
asm mov ah, 03hMFG
LordHoto
-
na klar sind die gleich! wo liegt da das problem???
cu todo
-
also bei mir ist der 2 Puffer genauso wie voher also leer
-
hmmm... komisch... poste mal dein komplettes programm
cu todo