Aktuelles
AmigaPortal.de

Wir würden uns freuen, dich als neues Mitglied begrüßen zu können. Melde dich noch heute an und werde Teil einer freundlichen Community deren gemeinsames Hobby der "AMIGA" ist. Hier kannst du dich in einer gemütlichen Atmosphäre mit anderen Usern zu vielen interessanten Themen rege austauschen oder andere an deinen Erfahrungen teilhaben lassen. Wir wünschen dir viel Spaß hier auf AmigaPortal.de

Amiga Programmierung mit VS Code

Data2006

Bekanntes Mitglied
Hallo zusammen,

ich bin auf der Suche nach einer guten (möglichst auf deutsch) Anleitung wie man den Visual Studio Code konfigurieren muß.

Ich habe da z. B. die Extension Amiga C/C++ Compile, Debug & Profile gefunden im VS Code. Aber der Anleitung nach ist es ein komplettes Programm was generiert wird. Ich möchte aber mit einem leeren Projekt starten. Mit dem kompletten Programm kann ich nicht viel mit anfangen. Will erst wieder in C/C++ einsteigen.

Wenn ich gerade schon dabei bin, hat Ihr einen Link für C- bzw. C++-Programmierung? Also Anfängerbuch auf deutsch.
Oder gibts gute YouTube-Videos?

Lieben Dank,
Heiko


PS: WinUAE-Emulator ist nicht ganz die richtige Gruppe, aber was mit Programmierung habe ich nichts gefunden. Aber ich benutze unter Win 11 auch WinUAE bzw. Amiga Forever und untger Linjux FS-UAE.
 

Falke_34

Neues Mitglied
Ich antworte dir mal - werde aber wahrscheinlich nicht ganz das treffen was du suchst!
C/C++ Compile müßte es sein aber VS Code weiß ich nicht was du damit meinst.

Selbst kann ich auch nicht programmieren - versuche aber gerne neues. Beste Resultate hatte ich bisher damit:
Leider ist hier der offizielle Github weg - wie aktuell das ist weiß ich nicht!

Unter Windows 11 brauchte ich dafür nur noch MSys2 (kenne ich nun schon vom QEmu compilieren): https://www.msys2.org
Danach setup-amiga-gcc.exe installieren und dann kanns eigentlich schon losgehen.

Für Amiga (SASC): https://ftp2.grandis.nu/turran/FTP/TheZone/files/_2014/WORK_SASC.hdf [SAS-C 6.58 with latest updates - HDF].7z

Jetzt kommt der beste Teil (da dürft ihr mich gerne steinigen):
Chat GPT benutzen - klingt zwar blöd ist aber irgendwie die beste Möglichkeit gewesen und nach ein bissl einarbeitung spuckt die KI sogar ganz brauchbares Zeugs aus.

Alternative 1: Sollte ein richtiges Lebewesen mit dem von dir benötigten Wissens anwesend sein - benutz ihn ;)
Alternative 2: Youtube kann auch helfen - aber wenn nicht gerade durch Zufall das perfekte Video gefunden wird das dann auch noch auf deutsch ist wirds schwierig

Hier mal ein kleines Beispiel was ich versucht habe (stand Januar 2025, seitdem nix mehr gemacht)(soll die SysInfos über dein Amiga System ausspucken):
- compilieren ging glaube, müßte jetzt aber lügen ob Crosscompile unter GCC oder mit SASC aufm Amiga
- starten kannst du es dann aufm Amiga
C:
#include <exec/types.h>
#include <exec/execbase.h>
#include <graphics/gfxbase.h>
#include <proto/exec.h>
#include <proto/graphics.h>
#include <stdio.h>
#include <string.h>

extern struct ExecBase *SysBase;
extern struct GfxBase *GfxBase;

// Funktion zur Erkennung der Custom Graphics Chips
void IdentifyCustomGraphicsChip(void) {
    unsigned short chipID = GfxBase->ChipRevBits0;  // Annahme: ChipRevBits0 repräsentiert die ID
    unsigned short revision = (unsigned short)(GfxBase->ChipRevBits0 >> 8);

    printf("\n--- Custom Graphics Chip ---\n");
    printf("Raw ChipRevBits0: 0x%04X\n", chipID);

    switch (chipID) {
        case 0:
            printf("Chip: OCS Denise");
            break;
        case 1:
            printf("Chip: ECS Denise (Enhanced Chip Set)");
            break;
        case 2:
            printf("Chip: AGA Lisa (Advanced Graphics Architecture)");
            printf("\nCapability: 24-bit color mode");
            break;
        case 3:
            printf("Chip: AAA Lisa (Advanced Amiga Architecture)");
            break;
        default:
            printf("Chip: Unknown (ID: %d)", chipID);
    }

    if (chipID <= 3) {
        printf(" (Revision: %d)", revision);
    }
    printf("\n");
}

// Funktion zur Erkennung von Prozessor-Typ, Taktfrequenz und Revision
void IdentifyCPU(void) {
    printf("\n--- CPU Information ---\n");

    if (SysBase->AttnFlags & AFF_68060) {
        printf("CPU: Motorola 68060 / 50 MHz (Revision: 6.0)");
    } else if (SysBase->AttnFlags & AFF_68040) {
        printf("CPU: Motorola 68040 / 25 MHz (Revision: 4.0)");
    } else if (SysBase->AttnFlags & AFF_68030) {
        printf("CPU: Motorola 68030 / 25 MHz (Revision: 3.0)");
    } else if (SysBase->AttnFlags & AFF_68020) {
        printf("CPU: Motorola 68020 / 16 MHz (Revision: 2.0)");
    } else {
        printf("CPU: Motorola 68000 / 7.14 MHz (Revision: 1.0)");
    }

    printf("\nFPU: ");
    if (SysBase->AttnFlags & AFF_68881) {
        printf("Motorola 68881/68882");
    } else {
        printf("None");
    }

    printf("\nMMU: ");
    if (SysBase->AttnFlags & AFF_68030) {
        printf("Present");
    } else {
        printf("None");
    }
    printf("\n");
}

// Funktion zur Erkennung der AmigaOS-Kickstart-Version
void IdentifyAmigaOSVersion(void) {
    unsigned short amigaOSVersion = SysBase->LibNode.lib_Version;

    printf("\n--- AmigaOS Version ---\n");
    printf("Detected Version: ");
    switch (amigaOSVersion) {
        case 27:
            printf("Kickstart 0.7 (First AmigaOS version shown at CES 1985, obsolete)\n");
            break;
        case 29:
            printf("Kickstart 0.9 (Internal, obsolete)\n");
            break;
        case 30:
            printf("Kickstart 1.0 (Obsolete)\n");
            break;
        case 31:
        case 32:
            printf("Kickstart 1.1 (NTSC or PAL only, obsolete)\n");
            break;
        case 33:
            printf("Kickstart 1.2 (Oldest revision)\n");
            break;
        case 34:
            printf("Kickstart 1.3 (Includes Autoboot expansion.library)\n");
            break;
        case 35:
            printf("Kickstart 1.3 Special (RAM-loaded version with A2024 display mode support)\n");
            break;
        case 36:
            printf("Kickstart 2.0 (Amiga 3000)\n");
            break;
        case 37:
            printf("Kickstart 2.04 (General Release 2)\n");
            break;
        case 38:
            printf("Kickstart 2.1 (Amiga 600)\n");
            break;
        case 39:
            printf("Kickstart 3.0 (Amiga 1200 and Amiga 4000)\n");
            break;
        case 40:
            printf("Kickstart 3.1 (General Release 3)\n");
            break;
        case 41:
            printf("Kickstart 3.1 (Japanese locale, never completed)\n");
            break;
        case 42:
            printf("Kickstart 3.1 Alpha (Internal alpha revision)\n");
            break;
        case 43:
            printf("Kickstart 3.2 (Amiga Walker, never completed)\n");
            break;
        case 44:
            printf("Kickstart 3.5 (Update to Release 3)\n");
            break;
        case 45:
            printf("Kickstart 3.9 (Update to Release 3)\n");
            break;
        case 46:
            printf("Kickstart 3.1.4 (Update to Release 3)\n");
            break;
        case 47:
            printf("Kickstart 3.2 (Update to Release 3)\n");
            break;
        case 50:
            printf("Kickstart 4.0 (Developer PreRelease for AmigaOne)\n");
            break;
        case 51:
            printf("Kickstart 4.0 (Official Release from Update 1)\n");
            break;
        case 52:
            printf("Kickstart 4.0 (Support for PPC equipped classic Amiga models)\n");
            break;
        case 53:
            printf("Kickstart 4.1 (Update for PPC models)\n");
            break;
        default:
            printf("Unknown or unsupported Kickstart version (%d)\n", amigaOSVersion);
            break;
    }
    printf("\n");
}

// Funktion zur Erkennung des RTG-Systems
void IdentifyRTGSystem(void) {
    struct Library *Picasso96APIBase = NULL;
    struct Library *CyberGfxBase = NULL;

    printf("\n--- RTG System ---\n");
    Picasso96APIBase = (struct Library *)OpenLibrary("Picasso96API.library", 0);
    if (Picasso96APIBase) {
        printf("RTG System: Picasso96");
        CloseLibrary(Picasso96APIBase);
    } else {
        CyberGfxBase = (struct Library *)OpenLibrary("cybergraphics.library", 0);
        if (CyberGfxBase) {
            printf("RTG System: CyberGraphX");
            CloseLibrary(CyberGfxBase);
        } else {
            printf("No RTG system detected (OCS/ECS/AGA likely active).");
        }
    }
    printf("\n");
}

// Funktion zur Erkennung des verfügbaren Chip- und Fast-RAM
void DisplayAvailableMemory(void) {
    ULONG chipMem = AvailMem(MEMF_CHIP);
    ULONG fastMem = AvailMem(MEMF_FAST);

    printf("\n--- Memory Information ---\n");
    printf("Chip RAM: %lu Bytes\n", chipMem);
    printf("Fast RAM: %lu Bytes\n", fastMem);
}

int main(void) {
    IdentifyAmigaOSVersion();
    IdentifyCPU();
    IdentifyCustomGraphicsChip();
    IdentifyRTGSystem();
    DisplayAvailableMemory();
    return 0;
}
 

startup-sequence

Neues Mitglied
Hallo Heiko,

sowas steht bei mir auch schon lange auf der Todo-Liste und ich komme nie dazu. Ich hatte mir mal vor einiger Zeit paar Sachen gebookmarkt, allerdings ist meine Bookmarksammlung das reinste Chaos. Was ich noch rausfischen konnte ist das hier, ich hoffe es hilft dir etwas.

Ein Schritt-für-Schritt-Tutorial, auf English, aber man kann es durch einen Online-Übersetzer jagen: http://pjhutchison.org/tutorial/amiga_c.html

Es gab/gibt einige Amiga Magazin Hefte zum Thema: https://kultmags.com/mags.php?folder=QW1pZ2EgTWFnYXppbi9Tb25kZXJoZWZ0ZQ==

Ein deutschsprachiges Tutorial, allerdings inzwischen nur noch über Archive.org verfügbar: https://web.archive.org/web/20170118232707/http://w3.norman-interactive.com/C-Kurs.html

Ein Video-Tutorial:

Du wirst ansonsten auf Archive.org viele alte Büchet zum Thema finden, wenn du zum Beispiel nach "Amiga C Programmierung" suchst.

Vielleicht hilft das wenigstens etwas beim Start. Neue Entwicklet braucht die Amiga-Commumity immer. :)
 
Oben