kategoria: AMOS
[#1] guru 000003 w amosie
Mam taki problem. Po uruchomieniu skompilowanego programu dostaje guru



Co ciekawe występuje ono tylko na procesorze 68000. Testowałem zarówno na uae jak i a 500. Od procka 68020 wszystko działa dobrze. Pogooglowałem trochę i widzę, że ludzie maja z tym problemy nie tylko w amosie ale i w blitz basicu. Niestety nie trafiłem na rozwiązanie. Zwiększenie stacka nic nie daje. Opis błędu sugeruje błąd w adresowaniu. Niestety nie wiem czego ani tym bardziej gdzie szukać źródła problemu.


Benedykt Dziubałtowski
[#2] Re: guru 000003 w amosie

@Benedykt Dziubałtowski, post #1

Trzeba by cofnąć się w źródłach do wersji gdzie jeszcze się nie wysypuje skompilowany program.
I wtedy powoli dodawać rzeczy i sprawdzać co powoduje ten błąd. Jeżeli nie można cofnąć się w źródle gry ( co może się zdarzyć - gdyż mamy tylko jedną wersje gry - na przykład gra.amos ) to wtedy trzeba usuwać fragmenty kodu źródłowego, kompilować i sprawdzać aż otrzymamy wersję nie zawieszająca się i od tego momentu powoli dodawać, kompilować i sprawdzać. To żmudna praca.
[#3] Re: guru 000003 w amosie

@Benedykt Dziubałtowski, post #1

A próbowałeś kompilować program z opcją która dołącza amos.library do pliku exe (niestety nie pamiętam gdzie to było w ustawieniach)? Może to jakaś niezgodność tej biblioteki - może masz wersję na 020 (o ile taka była)?
[#4] Re: guru 000003 w amosie

@gorzyga, post #3

Mam najnowszą bibliotekę asmos.library 2.30. Wkopiowanie amos.library do programu nic nie zmienia.


Benedykt Dziubałtowski
[#5] Re: guru 000003 w amosie

@Benedykt Dziubałtowski, post #4

Nieznam się, ale spróbowałbym ze starszą biblioteką amosa. Może to pomoże. Wiesz jak to jest z najnowszymi rzeczami...
[#6] Re: guru 000003 w amosie

@Wojox, post #5

Nie da rady. 2.00 to minimum, które mogę użyć. . Niestety 2.0 ani 2.3 nie pomagają.


Benedykt Dziubałtowski
[#7] Re: guru 000003 w amosie

@Benedykt Dziubałtowski, post #1

Ten błąd może dotyczyć także problemu sprzętowego. Jeżeli chodzi o AMOS-a, to problemem może też być, zgodnie z tym co pisano wcześniej, jakaś instrukcja.
[#8] Re: guru 000003 w amosie

@Benedykt Dziubałtowski, post #1

Przupomnialo mi sie, ze dotychczas nie kompilowalem niczego pod ostatnim amosowym paczem, wiec mi sie ten blad nigdy wczesniej nie zdazyl. Kompilowalem wszystko na A500 z niespaczowanym AmosPro.

Krotkie spojrzenie na AmosFactory i to co mozna wycztac:

Guru #80000003 DeadEnd alert
SubSystem : Processor
ErrorGroup : Not specified
Specification: Unaligned Address Error

On 68000 this is caused by using WORD or LONG access on odd address or by jumping to odd address or by odd supervisor stackpointer on exception.

Intel doesn't enforce integral boundaries. Motorola 68000 did, but only on 16 bit boundaries (because that was it's bus width). Then 68020 had 32 bit bus, and it had to be ok with non-aligned integers or programs written for the 68000 wouldn't work, so it stopped enforcing them as well. As an Amiga owner, I had problems with programs written for 68020 trying to access 16 bit values on 8 bit boundaries, which would work on 68020 but not on 68000. Guru meditation 80000003 - CPU unaligned access error.


Amos BUGS sekcja Compiler bugs.

Suma sumarum wyglada na to, ze kompilator cos "chrzani" z amosowymi bankami pamieci w kodzie i nastepuje skok do nieparzystego adresu, ktory najwidoczniej jest dozwolony na wyzszych niz 68000. Najprawdopodobniej sa to banki nr 1 i 2 (sprajty/boby i ikony).

btw
amos.lib w wersji 2.3 to jest chyba beta i moze lepiej tego pliku nie uzywac
[#9] Re: guru 000003 w amosie

@selur, post #8

Wiesz może jak taki problem obejść? ja wszystkie dane trzymam w banku 0.

Benedykt Dziubałtowski
[#10] Re: guru 000003 w amosie

@Benedykt Dziubałtowski, post #9

Może głupie, ale gdybyś w programie wszystkie "0" w instrukcjach dotyczących banków, pozamieniał na "3" ?
Oczywiście na kopii i użyj opcji automatycznej zamiany, nie zamieniaj samego 0 tylko razem z instrukcją, bo inaczej wszystkie zera pozmienia :P
[#11] Re: guru 000003 w amosie

@Benedykt Dziubałtowski, post #9

Nie mam pojecia co z tym kompilatorem ale ja bym zrobil tak..

Z twojej nieudanej prezentacji (nic nie widac na tym monitorze poza tym, ze masz monitor he he) widac, ze masz rowniez A500 ;)
Zainstaluj Amosa Pro 2.0 z paczem pod ta 500 i kompilacje gry wykonaj na niej, bez zgrywania nowych bibliotek, po prostu instaluj tylko z tych dyskietek jakie byly oryginalnie w Amosie.
Zanim zrobisz ta kompilacje, wyedytuj program na tej A1200, usun wszystkie banki (dodaj komende a ERASE ALL w pierwszej lini programu) i laduj je dopiero gdzies tam w programie, czyli komendami Load "nazwa banku .abk".
Przeczytaj liste bugow kompilatora i zastosuj sie do nich czyli najlepiej unikaj instrukcji Track Play, nie dodawaj zadnych komend za instrukcjami Data, tworz tylko banki i parzystej dlugosci, nie uzywaj instrukcji Reserve as Work itd..
Poza tym nie masz banku 0, bo banki zaczynaja sie od numeru 1, czyli na pewno chodzi ci o bank nr 1 w ktorym przechowywane sa obrazy dla sprajtow i bobow. Niestety nie ma innej metody przechowywania grafiki w Amosie jak sprajty/boby (bank 1) lub ikony (bank 2).
[#12] Re: guru 000003 w amosie

@selur, post #11

Grafiki w Amosie mozna przechowywać w formie .abk - instrukcja spack i unpack. Sprity boby i ikony można wycinać instrucją get bob lub get icon.

Ostatnia aktualizacja: 15.01.2013 22:59:03 przez RAL
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