Autor Thema: Testcode Port  (Gelesen 9754 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline tuxie

  • Benutzer
  • Beiträge: 6.834
  • Falcon! Milan! Schuetzt die Raubvoegel!
Testcode Port
« am: Di 25.10.2016, 20:10:07 »
Hallo,

leider stecke ich nicht so tief im C Coden drin, bräuchte aber ein Stück Codeschnipsel umgesetzt so das es unter TOS ausführbar ist. Gibt es jemand der das für mich machen könnte ?


// Define I/O Port Address for HC
#define HcDataPort 0x290
#define HcCmdPort 0x292

zu


// Define I/O Port Address for HC
#define HcDataPort 0xFEFF0000
#define HcCmdPort 0xFEFF0040

Abändern

Im Anhang die PDF Datei ab Seite 27 ist der Code Block
Tschau Ingo

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: Testcode Port
« Antwort #1 am: Mi 26.10.2016, 07:46:55 »
eigentlich brauchst Du nur das da zusätzlich (oben nach den includes einfügen):

#define HcDataPort  0xfeff0000
#define HcCmdPort   0xfeff0040

static short swpw(short w)
{
    return (w << 8) | (w >> 8);
}

static void outport(unsigned long port, short value)
{
    * (volatile short *) port = swpw(value);
}

static short inport(unsigned long port)
{
    return swpw(* (volatile short *) port);
}

inport() und outport() rufen jeweils noch swpw() um von little endian auf big endian (bzw. umgekehrt) zu wandeln. Die includes für dos.h und conio.h nimmst Du raus (die werden nicht gebraucht). Auf dem ST wird das ganze Geraffel wahrscheinlich im Supervisor-Mode laufen müssen, das mußt Du noch irgendwo einbauen.

Dann mit Pure-C (oder gcc mit -mshort) übersetzen und es müsste funktionieren.
And remember: Beethoven wrote his first symphony in C