Jau. uchar ist aber 1 Byte. Die Port-Adresse wird 2 Byte sein. Macht 3 Byte plus Rücksprung Adresse. Also 5 Byte total.
Beiträge von daybyter im Thema „Port-Befehl in C“
-
-
Ich glaub, Du musst den Zeiger erst in ne uint konvertieren.
Probier mal:
porta(0xdf08,(uchar) (((uint)bytezahl) >> 8));
Bei Deinem porta Befehl seh ich, dass Du 3 Byte auf den Stack pushed, im Assembler Code aber 4 Byte vom Stack holst? Macht der Compiler da ein 16 Bit Alignment, oder warum ist das so?
-
Na halt in und out in Asm benutzen? Das Problem darin ist ja nur, die Parameter vom Stack zu holen und bei inp den Rückgabewert auf den Stack zu pushen?
-
Müsste man sich zur Not die 2 Befehle mit Inline ASM nachbauen. Brauchst Du die Befehle noch an weiteren Stellen?
-
Öhm...die z80 Version von dem Hitech C sollte den inp und outp Befehl doch auch unter cp/m einbinden? Wieso soll das da nicht gehen? Wenn nicht, such mal in den Includes nach den 2 Befehlen und binde die zur Not per Hand ein.
-
Laut Anleitung Seite 107 kennt der Compiler inp(port) und outp(port,val)
-
Das ist doch ein Speicher-Zugriff?
Ich glaub den z80 Port Befehl wird man sich als Funktion selbst bauen müssen?
So mit z80 Inline Assembler halt?