kategorie: ANSI C, C++
[#1] Cross kompilacja Amigowego softu na WIndows 10
Witam amigowa brać.

naszła mnie ochota aby spróbować napisać hello world w C.

Chciałbym to jednak zrobić na jakimiś nowożytnym systemie. Coś tam m się obiło o uszy, że można to zrobić za pomocą cross kompilacji ( cokolwiek to znaczy)

Czy byłby ktoś uprzejmy łopatologicznie mi wytłumaczyć jak za pomocą Windowsa 10 mogę sobie przysłowiowe hello world skompilować?

Z góry przepraszam jeśli moje pytanie jest trywialne i głupie.
[#2] Re: Cross kompilacja Amigowego softu na WIndows 10

@Wankowicz, post #1

Tak, to obecnie najwygodniejsze rozwiązanie. Zacznij od instalacji visual studio code I tej wtyczki: https://github.com/BartmanAbyss/vscode-amiga-debug. Tam masz opis jak z tym wystartować. W przykładowym projekcie jest sporo więcej niż "hello world, ale spokojnie możesz sobie to uprościć.
[#3] Re: Cross kompilacja Amigowego softu na WIndows 10

@Mirq, post #2

W opisie jest, że to nie obsługuje to standardowej biblioteki więc będzie trudno napisać "Hello world".

Ostatnia aktualizacja: 12.07.2023 08:40:38 przez radekcz
[#4] Re: Cross kompilacja Amigowego softu na WIndows 10

@radekcz, post #3

OS Amigi wystawia funkcję Printf() i wiele innych - jak się człowiek uprze, to może nimi wszystko pisać. A jak się nie chce ich używać, to można się uprzeć i pisać wszystko samemu lub brać z zewnątrz. Powyższe rozwiązanie 100% wspiera wołanie funkcji systemowych.

Jak się chce bibliotekę standardową to zostają:
- vbcc - można go nawet na Amidze odpalić, ale wydajnościowo kod generuje taki se, czasem zdarzyło mi się że nawet generował zły - może kwestia włączonych optymalizacji, a może to jakaś wada w bazowym działaniu. Może też już jej nie być, bo dawno temu miałem ten przypadek
- Bebbo gcc - wymaga na windowsie zainstalowania MSYS2 lub WSL, ale ma bardzo kompletną bibliotekę standardową i generuje lepszy kod niż vbcc.

Ja osobiście poszedłem we wtyczkę Bartmana w vscode - ma świetne narzędzia debugowe. I tak nie używam całej biblioteki standardowej, a potrzebne kawałki można sobie skądinąd w internecie zajumać.

Ostatnia aktualizacja: 12.07.2023 09:51:31 przez teh_KaiN
1
[#5] Re: Cross kompilacja Amigowego softu na WIndows 10

@Wankowicz, post #1

Setting up gcc for Amiga cross development
[#6] Re: Cross kompilacja Amigowego softu na WIndows 10

@radekcz, post #3

No masz rację, nie da sie.


VSCode i wtyczka daje sensowne skonfigurowane na start środowisko z debuggerem. Z bebbo, trzeba kombinować, żeby debugger spiąć z IDE a i często przynajmniej mi się to rozłącza. Pytanie co autor planuje i jakie są jego umiętności.
2
[#7] Re: Cross kompilacja Amigowego softu na WIndows 10

@Mirq, post #6

  • Sprawdzanie czy SysBase nie jest zerem nie ma większego sensu. Wyzerowanie SysBase wywaliłoby cały system, więc jak wtedy zostałby wczytany nasz program?
  • Funkcja Exit(), zgodnie z dokumentacją, była przewidziana dla programów w BCPL. Nie powinno się jej używać, program w C kończy sie po prostu przez return 0.

Poprawny przykład "HelloWorld" jest np. tutaj, chociaż należałoby przy braku biblioteki standardowej wyrzucić argumenty 'argv' i 'argc', z poziomu API AmigaOS argumenty wywołania obsługuje się inaczej.
3
[#8] Re: Cross kompilacja Amigowego softu na WIndows 10

@Krashan, post #7

Choć to się wydaje nieprawdopodobne, w tym kodzie ktoś (nie ja) znalazł jeszcze trzy błędy, oprócz powyższych.

  • W przypadku gdy nie uda się otworzyć dos.library, Twój kod radośnie wywołuje Exit(), a to jest funkcja z... dos.library. Zwis.
  • Napis "Hello world!\n" ma 13 bajtów, Write() dostaje 15.
  • Biblioteka exec.library (SysBase) jest zawsze otwarta. Nie należy jej zamykać przez CloseLibrary().
3
[#9] Re: Cross kompilacja Amigowego softu na WIndows 10

@Krashan, post #8

Kod na szybko zmodyfikowałem z tego przykładu:

https://github.com/BartmanAbyss/vscode-amiga-debug/blob/master/template/main.c

Jeśli chodzi o zamykanie exec to nie zwróciłem uwagi na to, że należy ją inaczej traktować ale ma to sens skoro jej nie otwieramy. Ilość bajtów mi umknęła, bo edytowałem komunikat.
[#10] Re: Cross kompilacja Amigowego softu na WIndows 10

@Mirq, post #9

Pechowo trafiłeś na błędny przykład. Autorowi tego kodu najwyraźniej umknęło, że Exit() to funkcja dos.library, w związku z tym w linii 369 mamy użycie funkcji z biblioteki przed otwarciem tej biblioteki, a w linii 374 użycie funkcji z biblioteki mimo, że nie udało się tej biblioteki otworzyć.

W przypadku, gdy nie uda się otworzyć tak podstawowych bibliotek jak dos.library, czy graphics.library najsensowniejsze co można zrobić to po prostu
return RETURN_FAIL;
Gdzie RETURN_FAIL jest zdefiniowane w <dos/dos.h> i ma wartość 20.
4
[#11] Re: Cross kompilacja Amigowego softu na WIndows 10

@Mirq, post #9

Bardzo dziękuję wszystkim za odpowiedzi. Będę na dniach zgłębiał temat.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem