kategoria: ANSI C
[#1] VBCC a kompilowanie .device
Jest sobie MNT_VA2000, ma to czytnik kart SD, ma to do tego mntsd.device. Buduje się to komendą:

m68k-amigaos-gcc -m68000 -O2 -o mntsd.device -ramiga-dev -noixemul -fbaserel -I$CROSSPATH/m68k-amigaos/sys-include -I$CROSSPATH/os-include -L$LIBS -L$LIBS/gcc-lib/m68k-amigaos/2.95.3/ -L$CROSSPATH -L$LIBS/libnix mntsd_device.c mntsd_cmd.c -s -ldebug


Gdzie najistotniejszym parametrem jest -ramiga-dev. Tyle że VBCC takiego czegoś nie ma, więc jak z tego wybrnąć? Z tego co zrobiłem risercz to to jest opcja dla linkera.

Oczywiście mógłbym użyć GCC chociażby z toolchaina Cahira czy forka Bebbo, ale raz że tam skrypt budujący jak i skompilowany w ten sposób kompilator używa cygwina, którego bardzo nie chcę instalować w swoim systemie, a przerobienie tego na budowanie pod makefile i mingw nie jest trywialne. To co, pomysły? ;)
[#2] Re: VBCC a kompilowanie .device

@teh_KaiN, post #1

Zainspirowałeś mnie bym zajrzał do konstrukcji amigowego Device'a i Biblioteki (które są bardzo podobne do siebie).

Ja na Twoim miejscu, jeżeli VBCC nie ma odpowiednika -ramiga-dev po prostu zbudowałbym plik według zasad znajdujących się w ROM Kernel Reference Manualu:

Tutaj masz dokładną konstrukcję amigowego Device na prostym przykładzie. Jest sporo objaśnień, więc nie powinno być to aż tak skomplikowane. Wiem, jest asembler, ale gwarantuje on nam, że rozmiar naszego pliku będzie jak najmniejszy.

Możesz dać odwołania do tych funkcji w C.

This appendix contains source code for a sample device. The example code
is an excellent starting point for those who want to create a custom
device and add it to the Amiga's system software.


W telegraficznym skrócie:
1. Na początku kodu powinna być funkcja zwracająca błąd. To na wypadek wywołania device'a jako programu.
2. Następnie zamieszczasz tzw. "ROMTag". Zaczyna się od stałej RTC_MATCHWORD, a następnie:
  • Wskaźnik na początek ROMTaga (czyli na powyższe pole),
  • Adres końca kodu (musi być za ROMTagiem i nie na przecięciu sekcji kodu),
  • Flagi,
  • Wersję,
  • Typ (NT_DEVICE),
  • Priorytet,
  • Wskaźnik na nazwę (np. blabla.device),
  • Wskaźnik do identyfikatora,
  • Wskaźnik do struktury inicjującej.

3. Struktura inicjująca (Init). Jeżeli we flagach dałeś RTF_AUTOINIT tutaj powinno się znaleźć:
  • Rozmiar przestrzeni z danymi,
  • Adres tablicy wskaźników do funkcji,
  • Wskaźnik do tablicy z danymi,
  • Wskaźnik do procedury inicjującej.

4. Funkcje.

Sam skorzystam z tego, bo planuję zrobić biblioteczkę przydatnych funkcji.

To tylko z pozoru wygląda tak skomplikowanie. Jak się człowiek wgryzie, to to opanuje.

Ja bym tak wybrnął z tej sytuacji, jeśli chcesz znać moje zdanie. Ja lubię takie sprawy techniczne i nic na to nie mogę poradzić.

Życzę Ci powodzenia.
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