kategoria: ANSI C
[#1] Zrzucanie ROMu do pliku w C
Chciałbym w mini programie w C mieć funkcjonalność odczytu bajt po bajcie fizycznego ROMu z Amigi. Czy użyć którejś biblioteki systemowej? Jaką funkcją i skąd zrobić w C to co robię w Amosie PEEK ? Czy ROM ma zawsze stały adres początkowy? Jeśli tak to jaki? Pytam koncepcyjnie - z pętlami, zapisem do pliku, obliczaniem CRC itp sobie poradzę.
[#2] Re: Zrzucanie ROMu do pliku w C

@pong777, post #1

Czy użyć którejś biblioteki systemowej?


Nie ma to sensu raczej.

Jaką funkcją i skąd zrobić w C to co robię w Amosie PEEK


W C nie ma funkcji analogicznej do peek, po prostu ustawiasz wskaźnik na żądany adres i czytasz z tego adresu. Jak nie wiesz co to jest wskaźnik w C, to porzuć wszystko co robisz i najpierw się dowiedz.

Czy ROM ma zawsze stały adres początkowy?


Tak, ale są pewne subtelne różnice między różnymi modelami Amigi.


Jeśli tak to jaki?


0xF80000

Poza tym, patrz źródło oryginalnego programu transrom z UAE:
https://github.com/bernds/UAE/blob/master/amiga/source/transrom.c

Ostatnia aktualizacja: 05.12.2015 21:30:52 przez strim_
[#3] Re: Zrzucanie ROMu do pliku w C

@strim_, post #2

Tak rozumiem wskaźniki. Przykład naprawdę przejrzysty i po mistrzowsku napisany. Objawia się tutaj potęga języka C, dostępu do pamięci i obsługa strumieni we/wy.

A teraz pytanko kolejne - jeśli kości będą 1MB lub 2 MB to ich odczyt w całości będzie wyglądał analogicznie tylko adres końcowy będzie przesunięty 2 lub 4 razy czy to już nie jest takie proste?

Czy można wrzucić jakieś plik wykonywalny do własnego custom ROMu i mieć go dzięki temu dostępnego z ROMu np. po starcie z pominięciem startup-sequence?

Ostatnia aktualizacja: 05.12.2015 21:49:19 przez pong777
[#4] Re: Zrzucanie ROMu do pliku w C

@pong777, post #3

eśli kości będą 1MB


Tu sprawa jest nieco bardziej skomplikowana... W takiej sytuacji używane są przestrzenie 0xE00000 do 0xE7FFFF (1 połowa) i 0xF80000-0xFFFFFF (2 połowa).

2 MB


Taki KS nie istnieje i raczej nie jest wykonalny z tego co wiem. Ale gdyby był, to pewnie używałby zakresu 0xA80000-0xB7FFFF.

Czy można wrzucić jakieś plik wykonywalny do własnego custom ROMu i mieć go dzięki temu dostępnego z ROMu np. po starcie z pominięciem startup-sequence?


Można ale nie może to być zwykły plik wykonywalny a specjalny z przygotowanym tzw "ROM tagiem". Poza tym, taki plik później należy "wkomponować" we własny obraz KS np. programem Remus.
[#5] Re: Zrzucanie ROMu do pliku w C

@strim_, post #4

Tak, o Remusie wiem, o hi/lo, biteswap itd.

Ok czyli mamy max 1 MB więc 512 KB wolnego miejsca na "dodatki".

A czy zwykłe biblioteki np. 68060.library dla CyberStorma da się wkomponować w KS bez ROM-tagu?
[#6] Re: Zrzucanie ROMu do pliku w C

@pong777, post #5

A czy zwykłe biblioteki np. 68060.library dla CyberStorma da się wkomponować w KS bez ROM-tagu?


Nie mam pojęcia, nigdy nie próbowałem tego zrobić. 68060.library istnieje w ROMie BlizzardPPC na przykład. Ale być może jest to jakaś specjalna wersja.

Co do bibliotek, temat jest dość rozległy, opisany m.in. w Amiga ROM Kernel Reference Manual.

A jeśli chodzi o normalne programy wykonywalne, to tutaj kiedyś Toni wspominał o możliwości napisanie loadera, który pozwoliłby na ROMowanie dowolnych programów.

Ostatnia aktualizacja: 05.12.2015 22:24:04 przez strim_
[#7] Re: Zrzucanie ROMu do pliku w C

@strim_, post #6

Na czym dokładnie polega operacja BYTESWAP?
Czy chodzi o zamianę w bajcie wszystkich "0" na "1" i odwrotnie a może o coś innego? Jest to jakiś rodzaj operacji "XOR" a może przesunięcie bitowe w którąś stronę?
[#8] Re: Zrzucanie ROMu do pliku w C

@pong777, post #7

Nie, chodzi o zamianę bajtów miejscami (tzw. endian swap).

Tutaj jest program, który to robi.
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