Spokojnie Drac030. Po pierwsze loader plików relokowalnych już dawno był potrzebny i chwała Ci za to, że go napisałeś wraz z narzędziem do przygotowywania takich plików.
Moje wątpliwości dotyczą właśnie formatu, który proponujesz. Twoja pierwotna propozycja mi wydaje się zbyt uboga w porównaniu do formatu użytego w SDX. Sam piszesz, że dodałeś do niej nowe rzeczy już w trakcie trwania tego wątku, np. symbole. O to mi chodziło, dlatego mógłbyś to nieco szerzej opisać (jak nie dla mnie to może dla laoo albo krapa :) ).
skąd ci się wzięła uporczywie przez ciebie lansowana koncepcja, że proponowany przez mnie format pliku relokowalnego nie może być, bądź też ma nie być tworzony przez kompilator?
...przy okazji format można lepiej zdefiniować i szerzej wykorzystać; dlatego w ogóle poddałem to pod dyskusję.
No właśnie, a jeżeli będzie już tworzona przez kompilator, to może warto się zastanowić, czy nie wykorzystać tego do bardziej zaawansowanych celów niż sama relokacja. Chodzi mi tu o dwie rzeczy: współpracę między załadowanymi programami oraz zarządzenie pamięcią. To pierwsze już (jak piszesz) jest w postaci symboli.
Jeżeli mamy >64kB pamięci, to może też rozwiązać odwieczny problem wykorzystania dodatkowych banków w taki sposób, aby to loader, a nie program decydował, które banki należy przydzielić? A może przy 65816 nie dałoby się umieszczać pewne programy z innym PBR, tak aby miały do dyspozycji więcej ramu? (popraw mnie jak się tego nie da zrobić). Albo wyrównanie kodu do granicy strony, ale nie po to, by załatwić dzielone adresy, ale np. by precyzyjnie liczyć cykle? Ładować dane obrazu tak, aby nie wstrzelić się w granicę 4KB?
Tych rzeczy nie trzeba teraz implementować, ale warto znaleźć dla nich miejsce w nowym formacie, tak aby w miarę upływu czasu nie wywracać wszystkiego do góry nogami.
Jeśli mi nie odpowiesz na to pytanie, tak żeby odpowiedź miała ręce i nogi, to kończę dyskutowanie z tobą;
A szkoda, bo najlepsza dyskusja się dopiero pojawia się na trzeciej stronie ;)
To chyba mylisz komunikację między programami z obsługą wywołań systemu. W SDX jest to przyznaję rozwiązane bardzo pomysłowo, ale niewiele ma to wspólnego z tematem.
Nie mylę, bo możesz napisać dwa programy relokowalne, załadować je równocześnie i wzajemnie wywoływać funkcje za pomocą nowych symboli.
Może nie do końca to komunikacja w stylu semaforów i kolejek komunikatów, ale jak na Atarkę całkiem fajna.
Zobacz przykład nadajnika i odbiornika z dokumentacji Fast Assemblera.
Ja w ten sposób zabrałem się za pisanie nowego sterownika do XEP-80 pod Spartę. Niestety z braku czasu projekt śpi. Składa się z trzech relokowalnych programów (sterowników), ładowanych w miarę potrzeby: jeden to podstawowa obsługa XEPa, drugi to obsługa konsoli, trzeci drukarki XEPowej. Można też dopisać czwarty sterownik S:. Za pomocą symboli programy wywołują wzajemnie swoje funkcje. Użytkownik ładuje tylko to czego potrzebuje. Chciałbym, żeby taka możliwość była w nowym formacie, bo jak na razie taka struktura jest możliwa tylko w SDX.