1,101

(118 odpowiedzi, napisanych Programowanie - 8 bit)

Taki kod:

  blk reloc main
table:
?first .word 0
?last .word 0

table2:
  .byte [table.?last-table.?first]/4

generuje mi: "address relocation overload" !
Oficjalna dokumentacja (w historii) mówi: "błąd 'Addres relocation overload' wystąpi teraz tylko gdy wyrażenie będzie dotyczyć więcej niż jednej etykiety relokowalnej, poprzednio każde wyrażenie z udziałem etykiety relokowalnej powodowało wyświetlenie tego komunikatu błędu".
Ale jaki jest właściwie problem z etykietami relokowalnymi _w_jednym_bloku_? Bo ja rozumiem, gdybyśmy mieli etykietki w róznych blokach - wtedy nie wiadomo jaki będzie między nimi dystans, ale w przypadku jednego bloku wszystko przecież wiadomo...
Dałoby się to naprawić?

Edit: A druga choć związana z poprzednim przypadkiem rzecz jest taka - podobny kod;

  blk reloc main
table:
?first .word 0
?last .word 0
?len = [?last-?first]/4

table2:
  .byte table.?len

się kompiluje poprawnie, ale markuje table2 jako _adres_ do relokacji. A to już jest bardzo nieładne, bo:
1. w table2 mam bajt, a loader SDX zmodyfikuje mi tam 2 bajty,
2. table.?len jest jednak interwałem, który da się określić na etapie kompilacji i on się nie zmieni - nie powinien być relokowalny.
Kod wynikowy wygląda tak:

fe ff 01 00 00 00 05 00 
00 00 00 00 00 

fd ff 01 00 00 
fe 01
04 
fc

Edit2: Co myślałbyś o:
1. generowaniu "Addres relocation overload" tylko przy obliczeniach używających etykiet leżących w różnych blokach relokowalnych,
2. rzucaniu warninga kiedy do obliczeń używane są etykiety relokowalne - user ma być świadom tego co robi, a jak user sobie chce zaszkodzić, to niech sobie szkodzi :)

1,102

(47 odpowiedzi, napisanych Programowanie - 8 bit)

Były też użyte w playerze do CMC. Wszystko działało dopóki ludzie nie pomontowali sobie dodatkowych POKEY-ów...

1,103

(421 odpowiedzi, napisanych Fabryka - 8bit)

Orzeł wylądował! Książka super! Dzięki Duddie.

1,104

(323 odpowiedzi, napisanych Zloty)

@MWK: Się zrobi!
A ogólnie to wypadałoby się spotkać :) Wiosna przyszła...

1,105

(421 odpowiedzi, napisanych Fabryka - 8bit)

Ja poproszę sztukę.

1,106

(107 odpowiedzi, napisanych Programowanie - 8 bit)

Racja. Czyli mamy Rambo, CompyShop i częściowy CompyShop :).

1,107

(107 odpowiedzi, napisanych Programowanie - 8 bit)

Nazewnictwo, nazewnictwem ale bity adresujące banki są inne. Masz więc niby RAMBO (wg Twojej nomenklatury), które używa innych bitów (jak CompyShop). Wniosek stąd, że standardy standardami a rzeczywistość i tak bywa zaskakująca.
@koala: Zrób tę detekcję do cholery i będziesz miał problem z głowy :)

1,108

(127 odpowiedzi, napisanych Sprzęt - 8bit)

Zasugerowałbym rozważenie jakie urządzenia mogłyby być używane naraz na magistrali SIO, żeby nie okazało się że na wysłane polecenie jedno odpowiada NAK, a drugie ACK, bo na magistrali będzie miszmasz? Polecenie nieobsługiwane nie powinno odsyłać żadnego statusu, wtedy jest szansa że inne urządzenie odpowie (choć to złamanie założeń protokołu). Celem zapobieżenia konfliktów niektóre urządzenia (disk drive) mają swoje numery - może powinno to pójść w tą stronę?

Edit: ort

1,109

(107 odpowiedzi, napisanych Programowanie - 8 bit)

Pin chyba rzadko używa rdzeni R, bo ma w kompie gigamega ramu z U1MB.

1,110

(107 odpowiedzi, napisanych Programowanie - 8 bit)

Jeśli używasz rdzenia VBXE FX w wersji R, bo taki emuluje zachowanie rozszerzenia RAMBO, to wtedy górna połowa VRAM VBXE dostępna jest przez PORTB. I nie musisz manipulować rejestrami VBXE żeby się do tego dostać - wystarczy PORTB. Nawet nie musisz wiedzieć że w banku podstawiana jest VRAM. Niczego nie trzeba tu konfigurować w VBXE (prócz oczywiście odpowiedniego rdzenia).
Jeśli używasz rdzenia FX w wersji A, wtedy emulacji PORTB przez VBXE nie ma i chcąc mieć dostęp do pamięci VBXE musisz używać rejestrów VBXE i okien MEMACA lub MEMACB.

1,111

(107 odpowiedzi, napisanych Programowanie - 8 bit)

W VBXE masz 2 banki - stały MEMACB leżący dokładnie w miejscu banku PORTB i MEMACA, którego położenie i wielkość możesz konfigurować.

1,112

(15 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

Ja poprosiłbym SID-y.

1,113

(127 odpowiedzi, napisanych Sprzęt - 8bit)

Dzięki.

1,114

(127 odpowiedzi, napisanych Sprzęt - 8bit)

@Montezuma: Czy mógłbym Cię prosić o aktualizację Atariki w punkcie http://atariki.krap.pl/index.php/SIO i odpowiednio http://atariki.krap.pl/index.php/Lista_ … ug_funkcji i http://atariki.krap.pl/index.php/Lista_ … eracyjnych ?

1,115

(127 odpowiedzi, napisanych Sprzęt - 8bit)

Supeł. Czekam z niecierpliwością.

1,116

(127 odpowiedzi, napisanych Sprzęt - 8bit)

@xxl: Elegancja. A będzie jakaś specyfikacja jak z tym rozmawiać?

1,117

(127 odpowiedzi, napisanych Sprzęt - 8bit)

No, no, no... Ładnie to wygląda. A IRC-a obsługuje? :>

1,118

(185 odpowiedzi, napisanych Sprzęt - 8bit)

Doskonale! Można liczyć na jakiś zwięzły opis funkcjonalności finalnej wersji?

1,119

(107 odpowiedzi, napisanych Programowanie - 8 bit)

A jak za 10 lat zwiększy się liczba osób którym to będzie przeszkadzać, to zobowiązujesz się do naprawienia?

1,120

(107 odpowiedzi, napisanych Programowanie - 8 bit)

No dobrze, ale PO CO skoro nie używasz specyficznych właściwości rozszerzenia? Robisz detekcję pamięci i wiesz czy się da uruchomić i na jakich bankach. Jeśli nie zrobisz detekcji, to demo nie pójdzie np. na 130XE i będzie nieładnie.

1,121

(107 odpowiedzi, napisanych Programowanie - 8 bit)

Czyli nie ma znaczenia rodzaj rozszerzenia. A jak chcesz ustalić czy user ma na pokładzie 128, 192, 256, 320, 576 czy 1M bez detekcji? Poza tym RAMBO używa innych bitów niż CompyShop więc jeśli chcesz wykorzystać pełne 320KB to nie da się (chyba) hardkodować nrów banków.

Rozmawiamy o praktyce. Teoretyzowanie dotyczy pryncypiów.

1,122

(107 odpowiedzi, napisanych Programowanie - 8 bit)

To może faktycznie od początku.
Jaki jest powód przygotowania dwóch wersji programu? Czy Twoja aplikacja używa oddzielnego dostępu do pamięci przez CPU i oddzielnego przez ANTIC, czy chodzi tylko o adresowanie banków XRAM różnymi bitami? Bo adresowanie załatwia procedura detekcji XRAM, która określi Ci jakie wartości PORTB adresują jakie banki.
Jeśli są jednak inne wersje aplikacji dla innych rozszerzeń, to i tak przeprowadziłbym detekcję ilości banków.
Możliwość określenia przez użytkownika banków możliwych do użycia przez Twój program tak, żeby user mógł ochronić swoje dane w innych bankach to jest rzecz niezależna od tego jakie masz rozszerzenie pamięci.
A cywilizacja leży na łopatkach, bo zastanawiając się nad tym ilu użytkownikom zniszczysz dane, tak naprawdę zastanawiasz się nad społeczną szkodliwością czynu. Ot co.

Edit: PORTB

1,123

(107 odpowiedzi, napisanych Programowanie - 8 bit)

XRAM przeżywa w stanie nietkniętym zimny start.
DOS z rozszerzeniami się załaduje więc to żaden problem. Problemem są dane użytkownika np. ramdysk.
Widzę że dyktat większości zrobił Wam jednak wodę z mózgu. Cywilizacja umarła :/

1,124

(107 odpowiedzi, napisanych Programowanie - 8 bit)

To nie jest teoria, tylko dobra praktyka.

Edit: Ilość pamięci tu nie ma nic do rzeczy.
Jeśli Twój program wymaga 320 a user nie ma tyle, to malujesz stosowny komunikat.
Jeśli Twój program wymaga 320 a user dokładnie tyle ma, to malujesz stosowny komunikat i dajesz mu wybór czy odpalać czy nie.
Jeśli Twój program wymaga 320 a user ma więcej dajesz wybór.

Edit 2: No i fajnie byłoby gdybyś przy detekcji nie zniszczył zawartości banków :)

1,125

(107 odpowiedzi, napisanych Programowanie - 8 bit)

Wybieraczka banków służy do:
- nie zadeptania ramdysku,
- nie zadeptania rozszerzeń SDX,
- nie zadeptania programu BASIC XE kiedy używa się EXTEND (?),
- nie zadeptania czegokolwiek, co użytkownik sobie w XRAM-ie przechowa a o czym Twórca Programu nie ma zielonego pojęcia.
Ma sens w programach użytkowych pisanych dla DOS 2.x (ponieważ nie ma tam mechanizmów zarządzania pamięcią) - w SDX można się dowiedzieć czego nie dotykać.