Freepascal Datenausrichtung?

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Antworten
Benutzeravatar
Dosenware
DOS-Gott
Beiträge: 3745
Registriert: Mi 24. Mai 2006, 20:29

Freepascal Datenausrichtung?

Beitrag von Dosenware »

Gruß,

gibt es eine Möglichkeit die automatische Datenausrichtung innerhalb von komplexen Datentypen (z.b. Records) zu Deaktivieren?

Aktuell zerschießt er mir die Datenstruktur die mir der Vesainterrupt zurückliefert:

Code: Alles auswählen

Vesainf:record
 Signature:array[0..3] of Char;
 Version:array[0..1]of byte;
 OEMStringPTR:longint; {fpcintern haben Pointer 48bit}
 .....

liefert bei folgender Rückgabe:

56 45 53 41 00 02 04 77 00 C0 00 00 00 00 22 00

die Werte:
Signature=         41 53 45 56
Version  =         02 00
### OEMStringPTR = 00 00 C0 00

statt den erwarteten Werten:
Signature=         41 53 45 56
Version  =         02 00
### OEMStringPTR = C0 00 77 04
Dadurch verschiebt sich die gesamte Datenstruktur und ich bekomme fehlerhafte Daten, wenn ich OEMStringPTR auf array [0..1] of word setze funktioniert das ganze.
Benutzeravatar
Dosenware
DOS-Gott
Beiträge: 3745
Registriert: Mi 24. Mai 2006, 20:29

Re: Freepascal Datenausrichtung?

Beitrag von Dosenware »

Ok. erledigt... packed Record - kennt man von PB7 nicht, der macht das Automatisch.
Benutzeravatar
zatzen
DOS-Guru
Beiträge: 518
Registriert: Di 17. Apr 2012, 05:10
Wohnort: bei Köln
Kontaktdaten:

Re: Freepascal Datenausrichtung?

Beitrag von zatzen »

Jo, ich hab in freepascal auch {$A1} schalten müssen, um wie in DOS-Pascal Strukturen verwenden zu können.
mov ax, 13h
int 10h

while vorne_frei do vor;
Antworten