Skip to content

GCC 6.x cruzado

xeleh edited this page Jan 8, 2022 · 5 revisions

Cómo instalar el GCC 6.x para desarrollar cruzado desde Windows:

` C:>mklink /J amiga-gcc W:\Amiga\amiga-gcc

Junction created for amiga-gcc <<===>> W:\Amiga\amiga-gcc `

  • Comprobar que está instalado y ver qué versión tenemos: Desde la línea de comandos ejecutar m68k-amigaos-gcc -v

  • Compilar un fichero de manera sencilla: m68k-amigaos-gcc testgcc.c Esto generará un fichero a.out que podemos ejecutar desde AmigaOS.

  • Hello World:

#include <stdlib.h>
#include <stdio.h>
#include <dos/dos.h>
#include <clib/dos_protos.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <exec/exec.h>
#include <intuition/intuition.h>

struct GfxBase       *gfxbase ;
struct IntuitionBase *intuitionbase ;

struct Window *ventana ;

static struct NewWindow datos_ventana = {

  0 , 14 ,
   192 , 160 ,
  (UBYTE) ~ 0 , (UBYTE) ~ 0 ,
  IDCMP_CLOSEWINDOW | IDCMP_NEWSIZE | IDCMP_REFRESHWINDOW,
  WFLG_CLOSEGADGET | WFLG_DRAGBAR | WFLG_DEPTHGADGET |
  WFLG_SIMPLE_REFRESH | WFLG_SIZEBBOTTOM | WFLG_SIZEGADGET,
   0 , 0 ,
   "FUCK UNITY" ,
   0 ,
   0 ,
   96 , 48 ,
  (UWORD) ~ 0 , (UWORD) ~ 0 ,
  WBENCHSCREEN
};


// ------------------------------------------------------------------------------------------------
//
//
void bucle()
{
  int salir = FALSE ;

  while(!salir) {

    struct MsgPort *winPort ;
    struct IntuiMessage *mensaje ;
    unsigned long winSig ;

    winPort = ventana->UserPort ;
    winSig = 1 << winPort->mp_SigBit ;

    Wait(winSig) ;

    while(mensaje = (struct IntuiMessage *)GetMsg(winPort)) {

      switch(mensaje->Class)
      {
        case IDCMP_CLOSEWINDOW:
          salir = TRUE ;
        break ;

        case IDCMP_REFRESHWINDOW:
          BeginRefresh(ventana) ;
          EndRefresh(ventana, TRUE) ;
        break ;
      }
    }
  }
}



// ------------------------------------------------------------------------------------------------
//
//
int main(int argc, char *argv[])
{
  printf("\nFunciona\n") ;

  gfxbase       = (struct GfxBase *)OpenLibrary("graphics.library",  33) ;
  intuitionbase = (struct IntuitionBase *)OpenLibrary("intuition.library", 33) ;


  if(gfxbase != NULL && intuitionbase != NULL) printf("\nTODO OK!!\n") ;

  {
    ventana = OpenWindow (&datos_ventana) ;
    if (ventana != NULL) {

      bucle() ;
      CloseWindow(ventana) ;
    }
  }

  return 0 ;
}
  • Resultado:

Clone this wiki locally