Witam,
Jakiś czas temu zabrałem się za używanie banków rozszerzonej pamięci na potrzeby nowej gry. Pojawiły się pewne problemy z SDX i tebe polecił mi skorzystać z kodu "sparta detect". Wydawało się to działać dobrze przez dłuższy czas...

Dzisiaj po dodaniu kolejnej porcji kodu do gry zaczęła mi się ona wieszać (tylko czasami) w momencie preloadingu danych do banków. Szybki debug i co widzę? sparta_detect zwraca $00, czyli, że niby nie używa banków. Co jeszcze ciekawsze, uruchomienie gry pod SDX na prawdziwym Atari zwraca $FF, czyli brak SDX (?).

Dorobiłem wypisywanie wartości zwracanej ze "sparta_detect" na ekran i załączam obrazki. Na razie "omijam" sobie ten problem sztucznie zwracając ze "sparta_detect" wartość $ED, bo o ile się nie mylę, bodajże coś takiego było zwracane, gdy jeszcze wszystko działało dobrze. Wolałbym jednak Was zapytać - co tu zaszło?

Acha, oczywiście i w Altirra i w prawidzym HW w configu mam "USE BANKED" i dodatkowy RAM jest włączony. Dodam jeszcze, że moja wiedza o SDX i bankach jest jeszcze na poziomie "początkujący".

Post's attachments

sdx_800xl.jpg 169.73 kb, nikt jeszcze nie pobierał tego pliku. 

sdx_altirra.png 3.07 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.

2

A skąd waćpan owo "sparta_detect" wziąłeś? Z Atariki?

KMK
? HEX$(6670358)

3

Tak, z Atariki. Konkretniej to stąd:
http://atariki.krap.pl/index.php/Progra … mi%C4%99ci

Próbowałem też z wersją, która dołączona jest do najnowszego MADS, bez wnikania, czy czymś się różnią. Efekt ten sam.

4 Ostatnio edytowany przez drac030 (2014-01-11 19:00:20)

Rozumiem też, że nie robiłeś w niej żadnych zmian. Asemblujesz madsem?

EDIT: u mnie działa zgodnie z oczekiwaniami, właśnie sprawdziłem na paru konfiguracjach (w tym na emulcu).

KMK
? HEX$(6670358)

5

Nie, zmian w procedurce nie robiłem. Wywołuję ją też na samym starcie programu, dlatego nie ma możliwości, żebym coś ważnego wcześniej nadpisał. No chyba, że nietrafionymi ORGami podczas ładowania.

Asembluję MADSem.

Ponieważ w większości przypadków takie "dziwne" problemy okazują się być skutkiem jakiegoś mojego czeskiego błędu, pokombinuję trochę jeszcze dziś wieczorem jak uśpię dzieciaka.

6

Jak madsem, i nie robiłeś zmian, może problemem jest to:

sym_t           .byte "T_      "

Tekst ma być w ASCII, mads tu wymaga ujęcia go w apostrofy, natomiast cudzysłowy generują kody ekranowe czy cośtam (czyli działa to jak .sbyte). Tak żeby się komu nie nudziło :)

KMK
? HEX$(6670358)

7

Ha! No nie mogę :)
Dzięki, działa! Sto lat bym myślał i bym nie wymyślił :) Zwłaszcza, że właśnie do MADS dołączony jest przykład z cudzysłowami.

Może mógłbyś dodać stosowny komentarz na Atariki?

Post's attachments

sparta_detect_dziala.jpg 154.97 kb, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.

8

i to niby moja wina :)

przecież jest takie bezpieczne coś jak DTA c, DTA d

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

9

Ale przy symbolu akurat to mogłoby używać ASCII zawsze. Przy inc i ins nie ma z tym przecież problemu :)

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

10

dołączę do kol. górnika

ja to ostatnio do        dta d'     '     

pod edytorem PC przemyciłem do string'a tabulator (kod $09)
i nazwymyślałem Madman'owi jaki to okropny błąd assembleracji powstaje   :lol:

powstawało coś takiego:
00 00 09 00 00

ps. czy dostanę nagrodę geniusza roku?