Hello, Guest the thread was viewed660 times and contains 7 replies

last post from Matula at the

Amiga 500 Boot-Loader mit GNU Toolchain erstellen - linken geht leider nicht...

  • Hallo,

    ich habe folgenden Code, der sich sehr schön assemblieren läßt.

    Leider streikt der Linker, und meldet, dass er keine Funktion finden kann.

    Der Fehler liegt in Zeile: 12 der Assembly.

    Aber wie kann ich dies lösen ?

    Mein Ziel ist es, Text auszugeben, der nach dem einstecken der Diskette bzw. ADF im WinUAE gestartet wird,

    ohne das irgendwelche Bibliotheken gebraucht werden.

    ich verwende folgende Schritte (Programme unter MS-DOS - einige Tools stammen von MinGW - wie "sed"):


    1. sed 's/;.*//' bootloader.asm > bootloader.s

    2. m68k-amigaos-as.exe -o bootloader.o bootloader.s

    3. m68k-amigaos-ld.exe -o bootloader.hunk -Ttext 0x0 -nostdlib bootloader.o


    1. zum entfernen der Kommentare

    2. assemblieren mit gnu as für m68k

    3. linken mit gnu ld für m68k


    3. ist leider nicht erfolgreich

  • Ich habe die Lösung gefunden.

    Die Zeile: 12 muss lauten:

    Code
    1. move.l #0xdf000, a0

    dann kann ich wie folgt, das hunk file erstellen (ich hoffe doch, das es ein hunk file ist):

    Code
    1. sed 's/;.*//' bootloader.asm > bootloader.s
    2. m68k-amigaos-gcc.exe -m68020 -O3 -fomit-frame-pointer -noixemul -nostdlib -o bootloader.o -c bootloader.s
    3. m68k-amigaos-gcc.exe -m68020 -O3 -fomit-frame-pointer -noixemul -nostdlib -o bootloader.hunk bootloader.o

    wie bekomme ich jetzt dieses image auf Diskette ?

    oder ist das schon als ADF Image nutzbar - ich habe es noch nicht probiert...

  • Mein Ziel ist es, Text auszugeben, der nach dem einstecken der Diskette bzw. ADF im WinUAE gestartet wird

    Der Code sollte dann im Bootblock der Disk ausgeführt werden.

    http://amigadev.elowar.com/rea…anual_guide/node007D.html


    https://eab.abime.net/showthread.php?t=52725

  • Der Code ist aber insgesamt Schrott. Es wird nur $dff000 gelesen und geschrieben. Das ist eine Adresse, die von der CPU aus gar nicht zu erreichen ist.

    Wenn Du auf den Bildschirm schreiben willst, muss auch irgendwo der Font her kommen. Also entweder durch Aufrufen einer OS Routine oder durch Kopieren aus dem Speicher.


    Also im besten Fall macht der Code gar nichts und im schlechtesten Fall stürzt der Rechner dabei ab.