1,926

(259 odpowiedzi, napisanych Fabryka - 8bit)

Zalinkuję tylko, bo to (chyba) nie miejsce na ewentualne dysputy.

1,927

(14 odpowiedzi, napisanych Fabryka - 8bit)

Część i czołgiem Towarzystwu!
Miałem swego czasu napad podczas oglądania TOMEK-8 cartridge tech-demo aby sprawdzić, na ile wydajnie dałoby się coś podobnego zrobić z wykorzystaniem znanego i lubianego VBXE.
Cóż, jak pomyślałem tak też niedawno uczyniłem i oto: https://mono.i-demo.pl/vbxe/t8vbxe.zip

W mojej implementacji program ładuje grafiki z dysku, po czym przepisuje je do VRAM i zleca VBXE wygenerowanie grafik przesuniętych o 1,2,3..7 pikseli. CPU zajmuje się tylko aktualizacją pozycji obiektów, określeniem na podstawie pozycji x i y którą grafikę (będącą w jego VRAM) ma pokazać i gdzie, oraz wygenerowaniem blit-listy dla VBXE. VBXE podczas każdej ramki TV wykonuje tę listę i maluje obiekty w swoim VRAM na zorganizowanym tam ekranie wirtualnym o rozmiarze 208+256 x 60+208+60 pikseli (to jakieś 58 * 328 = 19024 bajty), po czym na końcu kopiuje kawałek tegoż ekranu na fizyczny ekran widziany przez ANTICa. Dzięki temu CPU nie musi obcinać obiektów do rozmiaru ekranu i marnować niepotrzebnie cykli. Kompletny obraz malowany jest przez ANTICa co oczywiście spowalnia CPU.
Oczywiście gdyby wszystko zostało przerzucone na barki VBXE (wyświetlanie grafiki na overlay'u), to nie trzeba byłoby generować przesunięć (akurat to niczego by nie zmieniło i obiekty zajęłyby w VRAM taki sam obszar), CPU miałby więcej czasu na swoje obliczenia i wszyscy żyli by długo i szczęśliwie. Nie o to jednak mi chodziło, a chciałem właśnie sprawdzić możliwości współpracy VBXE (blittera) z ANTIC'em przy malowaniu zwykłej grafiki Atari.
Parafrazując Nosty'ego mogę powiedzieć, iż na ekranie dzieje się:
- 12 obiektów o rozmiarach 40x27 pikseli,
- 12 obiektów o rozmiarach 56x54 piksele,
- 12 obiektów o rozmiarach 72x57 pikseli,
- 12 obiektów o rozmiarach 88x43 pikseli
+ okazjonalnie gwiazda śmierci (2 obiekty), teksty (1 obiekt) no i tło (1 obiekt).
Liczę kształt, jak i maskę jako osobne obiekty.
W celach poglądowych wprowadzone zostały też wskaźniki obrazujące zajętość:
- blittera VBXE (pasek po lewej stronie ekranu),
- CPU (paski po prawej stronie ekranu - 1 pasek to jedna ramka TV, 2 paski to dwie itd.).
W początkowej fazie z przycinaniem obiektów do ekranu, liczeniem pozycji z częścią ułamkową (ale blitowaniem obiektów od razu na ekran ANTICa) wszystko zajmowało CPU ponad 4 ramki :/ Obecnie obsługa tych 52 obiektów mieści się w ramce (arytmetyka na liczbach całkowitych, koordynaty obiektów na liczbach naturalnych co eliminuje arytmetykę U2, tablicowane dzielenie przez 8, oraz adresy początków linii dla ekranów wirtualnego i rzeczywistego).

Nie wiem, jak Nosty urządził sobie swój kod i jakie rzeczy robi mu processor na TOMKU, a czym dokładnie zajmuje się CPU, ale widać że wąskim gardłem przetwarzania jest CPU w Atari :/ Niestety. (No i oczywiście umiejętności koderskie człowieka) Tak więc "Imperial March" trzeba sobie puścić z empetróchy (a taką fajną muzykę Pinokia miałem na podorędziu w TMC... :/).

Jak to uruchomić? Otóż wymagania są określone dość klarownie:
- Sparta DOS X w wersji 4.4x (ja używałem 4.46),
- VBXE z rdzeniem FX 1.2x (mam 1.24a),
- Atari XL/XE z minimum 64KB RAM,
- jakiś nośnik dyskietkowy (przykro mi, ale przez moje lenistwo z magnetem to to nie podziała).

Jeśli ktoś chciałby się przyjrzeć kodowi, to udostępnię go każdemu chętnemu (obecnie trzeba zamailować), a w późniejszym terminie wygeneruję jakiegoś zipa i instrukcję jak i czym to kompilować.

Pozostaje mi, jako autorowi życzyć Wam wszystkim smacznego i zachęcić do szczerej krytyki (wyrazy wdzięczności, zachwytu, bluzgi, faki w demach, etc. mile widziane) ze szczególnym uwzględnieniem Nosty'ego gdyż bardzo podoba mi się jego projekt i moralnie wspieram go z całych sił.

Edit: Zapomniałem napisać jak to uruchamiać:

1. Załadować sterownik VBXEFXS.SYS, który tworzy w pamięci RAM cienie dla rejestrów VBXE (będzie o tym osobny wątek w terminie późniejszym).
UWAGA!
Sterownik ten gryzie się z S_VBXE.SYS więc zaleca się niewspółistnienie.

2. Załadować T8VBXE.COM.

Edit 2: Spieszę jeszcze nadmienić, iż jedyny emulator supportujący VBXE - Altirra 2.50 test 22 ma buga (blit w trybie 4 AND) i obiekty nie będą pokazywane poprawnie.

Ładne. Cenkju.

1,929

(25 odpowiedzi, napisanych Bałagan)

Przyjacielu. Skoro Twój Ukochany Komputer nie żyje, umarł i nic nikt na niego nie robi (co najwyraźniej spędza Ci sen z powiek), a na dedykowanym forum nie da się wytrzymać, to może po prostu czas znaleźć sobie nowe zajęcie i zająć się czymś pożytecznym lub przynajmniej pasjonującym, zamiast opowiadać co to kto i czym nie powinien się zająć w swoim wolnym czasie? Atari jak widać "30 lat po czasie" ma się całkiem nieźle.

1,930

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Czy w trybie AND (4) zachodzi optymalizacja z source"=$FF?

Edit: Głupie pytanie. Uprasza się admina o usunięcie cichcem :P

1,931

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Dzięki ajcek. Późno już było, lecz dziś jest nowy lepszy dzień w związku z czym poszukałem forum i oto: http://www.atari.org.pl/forum/viewtopic.php?id=10265

1,932

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Szkoda.
Zadanie: dokonać rotacji w lewo bloku "len" danych zaczynającego się we "from"; wynik umieścić w "to"

0: to+len=0                                      ;clear bit shifted into end of buffer (1 if bit should be set)

1: mode=0, and=$00, xor=$7f, src=xxx, dst=to     ;fill buf with $7f
2: mode=1, and=$80, xor=$00, src=from, dst=to    ;copy $80 to buf when source value has highest bit set
3: mode=2, and=$00, xor=$81, src=xxx, dst=to     ;buffer contains shifted out bits shifted into lowest bits
4: mode=2, and=$ff, xor=$00, src=from, dst=to+1  ;add
5: mode=2, and=$ff, xor=$00, src=from, dst=to+1  ;add

Wynik operacji znajduje się w "to"+1.
"from" nie jest modyfikowany.
"to" powinien mieć rozmiar o 1 bajt większy niż "from".

Jeśli dobrze liczę VBXE będzie realizować rol pojedynczego bajtu w 7/8 cykli (czy można by prosić o diagramy dla operacji blittera tak, żeby można było sobie precyzyjnie policzyć czasochłonność blitów).

Edit: styl

1,933

(1,653 odpowiedzi, napisanych Bałagan)

Ech te gry z Ultimate są po prostu śliczne!

1,934

(1,653 odpowiedzi, napisanych Bałagan)

Pięknie gra.

1,935

(84 odpowiedzi, napisanych Różne)

A gdzie opcja "wszystkie"? Ankieta jest tendencyjna :/

1,936

(8 odpowiedzi, napisanych Programowanie - 8 bit)

Czy zadając blit w trybie 2 (ADD) można spowodować, żeby operacja ta odbywała się Z PRZENIESIENIEM?

Edit: Przeniesienie mogłoby działać tylko w obrębie pojedynczej linii.

1,937

(294 odpowiedzi, napisanych Bałagan)

Atari zamknięte? Hmmm...

1,938

(294 odpowiedzi, napisanych Bałagan)

A jakie ma znaczenie czy dodatki robi firma macierzysta (która nota bene nie istnieje, bo zbankrutowała) czy firmy trzecie? Cały pece opiera się na działalności firm trzecich. Kto kupuje IBMa?

1,939

(294 odpowiedzi, napisanych Bałagan)

Celowo było 8086 dla uwypuklenia absurdu.

1,940

(294 odpowiedzi, napisanych Bałagan)

Otóż to. Co prawda Atari Inc i Atari Corp już nie ma, ale sprzęt żyje, a więc się też i rozwija dzięki inicjatywie prywatnej. Właśnie montuje się rozwojowe wersje procesora do maszyny, projektuje rozszerzenia (pamięci, grafiki, dźwięku, urządzenia io), więc jeśli ktoś chce żeby jego programy działały na 8086 z magnetofonem, to jego sprawa.

1,941

(294 odpowiedzi, napisanych Bałagan)

@xxl: Za wąska w biodrach. Tutaj jest model niewybrakowany: http://www.dereatari.republika.pl/images/3xe_2.jpg (między nimi inwalida).

1,942

(294 odpowiedzi, napisanych Bałagan)

Patologika.

1,943

(27 odpowiedzi, napisanych Emulacja - 8bit)

vi + mads + atari800 + franny + iconv + make + sio2bsd + atari65xe :)

Jakże się myliłem. Czy mógłbyś podesłać te atry? Sprawdzę co się dzieje.

Edit: Kompatybilność na poziomie wpisów w katalogu jest zachowana - inne nieco jest vtoc, no i linki 16-bitowe w sektorach (to moje usprawiedliwienie :P, ale fakt jest faktem - Franny nie pokazuje wpisów).

1,945

(125 odpowiedzi, napisanych Fabryka - 8bit)

A dlaczego wszystko chcecie mieć w assemblerze, a nie chcecie korzystać z zewnętrznych narzędzi? IMHO assembler powinien w zasadzie tylko assemblować mnemoniki i generować kod relokowalny dla linkera, a linker na podstawie modelu pamięci i rodzaju pliku wynikowego powinien wygenerować co trzeba (nierelokowalne lub relokowalne).
Jak Fox powiedział - generowanie dodatkowych danych załatwia make, włączanie tego do kodu załatwia preprocesor, kompilację assembler. Tebe ma mniej roboty, mads działa lepiej bo jest łatwiejszy w utrzymaniu i wszyscy są zadowoleni.

Duże dyski MyDOS zakładają nieco inny system plików niekompatybilny z AtariDOS. MyDOSa obsługuje mój ataridosfs i xedisk, Franny tego niestety nie potrafi :/

1,947

(6 odpowiedzi, napisanych Bałagan)

side, sdx, sparta commander, vbxe, s2:, last word

Zasysamy tak:

$ cvs -d:pserver:anonymous@atari8.cvs.sourceforge.net:/cvsroot/atari8 login
$ cvs -z3 -d:pserver:anonymous@atari8.cvs.sourceforge.net:/cvsroot/atari8 co -P franny

Przy logowaniu podajemy puste hasło. Kod franny znajdzie się w podkatalogu franny.
To wszystko opisane jest o tu.

Edit: A pacza to już standardowo:

$ patch -p0 <franny-20140107-sdx2x512bps.diff

1,949

(1,653 odpowiedzi, napisanych Bałagan)

Sparkling icicles piękne! Dzięki.

Dodałem support dla:
- 512b sektorów .ATR,
- wersja 2.1 SpartaFS,
- atrybut A w listingu.
Paczowałem wersję z CVS z dnia 7 I 2014 (jak sama nazwa pacza wskazuje).
To szybka poprawka i może nie najlepsza, ale jak na razie zachowuje się poprawnie :) więc jakby komuś się przydało to proszę bardzo.

Edit: Atrybut.