Dlaczego w Atari używana jest linia RDY?
Czy nie prościej byłoby wstrzymywać CPU linią HALT?
Próbuję zrozumieć, dlaczego między ANTICiem i 6502 biegną te dwie linie, zamiast jedna.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Fujisan 1.1.6 Ukazała się aktualizacja Fujisan, nowoczesnego frontendu dla emulatora Atari800 z obsługą FujiNet.
A7800DS 5.2a Nowa wersja emulatora Atari 7800 dla konsol DS/DSi przynosi poprawki błędów i lepszą synchronizację.
Barbarian na Atari 8-bit już blisko Vega kończy prace nad nową konwersją kultowego Barbariana.
System Error tematem konkursu 24h Compo Poznaliśmy temat nowej edycji konkursu 24h na Atari.area. Czas na tworzenie!
Edytor poziomów Montezuma's Revenge Lew Daney udostępnił narzędzie pozwalające na tworzenie własnych piramid w kultowej grze na Atari.
atari.area forum » Posty przez Fox
Dlaczego w Atari używana jest linia RDY?
Czy nie prościej byłoby wstrzymywać CPU linią HALT?
Próbuję zrozumieć, dlaczego między ANTICiem i 6502 biegną te dwie linie, zamiast jedna.
Na czym miałoby polegać to oszustwo?
Działa jako stereo w maluchu czy nie?
Jakieś konkrety, co się zepsuło i dlaczego nie da się czytać? U mnie działa.
"Stoi w miejscu" ? https://xxl.atari.pl/zx0-decompressor/ 10 października 2021, a Super Packer równo rok wcześniej.
Próbowałeś napisać do TeBe zamiast marudzić na forum?
W samą porę na zabawę sylwestrową! Brawo!
Na PCB jest: 2060-701572-002 REV A oraz naklejka z kodem paskowym i pod nim: 2061-701572-400 AE XT 7T10 QM53 2 0004370 0 374
Te zgrzyty nie są takie głośne - jakby zwykły dłuższy ruch głowicy. Co jest na tym EEPROM, że nie wystarczy przełożyć PCB?
Dane nie wydają się tak cenne, żeby płacić ileś tysi firmie zewnętrznej. Odgrzebuję źródła efektów na malucha i niektóre są chyba tylko na tym padniętym dysku.
Mam dysk WD5000BEVT-75ZAT0, który bez problemu działał w laptopie i po przełożeniu do kieszeni USB.
Niestety podłączyłem go do gniazda USB, które było luźne i od tego czasu dysk nie działa.
Po podłączeniu słychać pięć zgrzytów. Windows nie wyświetla partycji. Windowsowy Disk Manager proponuje mi "inicjalizację dysku".
Kieszeń jest ok, bo podłączyłem inną kieszeń i jest to samo.
Jak mogę odzyskać dane z tego dysku?
Jest tam jedna ZTCP nieszyfrowana partycja NTFS 500 GB.
if (adres1 > adres2)Adresy są nazywane w C wskaźnikami, np.
char *p = ...
p += 0x100; // zwiększ adres
*p += 5; // zwiększ bajt pod adresem pTo tym bardziej przeplot ma znaczenie - trzeba go dobrać do prędkości dekompresji.
Ładne! Podoba mi się też intro.
32:49 - glitch na dole kolumny po prawej.
"Press Action to continue" ?
Co do prędkości odczytu, to wygląda mi jakby dyskietka była zaformatowana z nieoptymalnym przeplotem.
"scena" dryfuje, zrob jakis stream i wyznacz kierunek kapitanie :D
Będzie brzęczeć składowa 50 Hz i piszczeć 15 kHz.
Pytasz o to, czy masz 16 czy 48 KB podstawowego RAMu?
Jeśli masz cartridge z BASICiem, to:
? PEEK(106)/416 = 16 KB
40 = 48 KB (8 KB przesłonięte przez BASIC)
Wow, właśnie odkryłem, że Compiler Explorer ma cc65! https://godbolt.org/z/4YvxdeT7f
Nie ma.
To nie jest sam pomysł, tylko coś działającego. Napisz chociaż do autora, że Ci to potrzebne.
Akurat taka optymalizacja w kompilatorze nie jest zbyt skomplikowana: sprawdzasz, że inicjalizator tablicy jest stały i że tablica jest tylko odczytywana. Poprawiłem nie ze względu na wydajność, tylko czytelność kodu - jak widzę taki, jak Twój, to szukam miejsca, gdzie tablica jest modyfikowana oraz dlaczego literały znakowe konwertują się do wskaźnika nie-const - to powinien być błąd kompilacji. Niezależnie, czy targetem jest 6502 czy Xeon.
Bardziej skomplikowana jest analiza zakresu zmiennych.
Jako twórca kompilatora widziałem większe "kwiatki", ale to już przy jakimś piwie kiedyś. I o LLVMie. ;)
Lepiej napisać to tak:
static const char * const msg[] = { ... };I wtedy to jest zwykła tablica o stałym adresie (spoko, non-stop spotykam się z kodem napisanym tak, jak Ty napisałeś :).
Kluczowe jest, czy kompilator zrozumie, że "i" jest w zakresie 0..127 i wtedy:
; AX=i
asl @
tay
lda msg,y
ldx msg+1,y
jsr pushaxTu widać, że w przypadku 65816 nie ma to znaczenia.
nie wiem jak jest dokładnie w CC65 (trzeba by podpytać np. Fox-a) ale wydaje mi się że stos jest emulowany (przynajmniej gdy wybierzemy "większy model pamięci/adresowania"). Niestety narzut kodu przy realizacji w tego w ten sposób jest dość spory i mam wrażenie że wydajność kodu generowanego przez kompilator drastycznie spada.
ABI cc65 stosuje do argumentów i zmiennych lokalnych stos programowy. Na stronie zerowej jest wskaźnik o identyfikatorze "sp". Stos sprzętowy jest używany tylko do adresów powrotu i na dane tymczasowe. Odczyt z wierzchołka stosu programowego wygląda tak:
ldy #1
lda (sp),y
tax
dey
lda (sp),yNa tej zasadzie mamy dostęp do wierzchnich 256 bajtów stosu.
Wydaja mi się że w przypadku 65xx i C problemem stają się również operacje które wymagają użycia dużej ilości
wskaźników, przykładowo:ctx->iocb.len = 256;
Tu widzę tylko jeden wskaźnik: ctx. Zagnieżdżone struktury mają offsety będące stałymi czasu kompilacji.
; AX=ctx
sta ptr
stx ptr+1
ldy #offsetof(ctx_iocb.len)
lda #<256
sta (ptr),y
iny
lda #>256
sta (ptr),y@Fox: Możesz wyspecyfikować, o co ci chodzi? Czego według ciebie nie zrobiłem lub co zrobiłem a nie powinienem? I przede wszystkim, czemu powinienem byl tak zrobić (lub nie)? Konkrety proszę. Przyglądałem się fragmentom, np. jak robiona jest pętla dla tablicy dłuższej niż jedną strona albo jak jest robione memcpy. Ale całego kodu nie przeglądałem bo nie było to dla mnie interesujące.
Twierdzę, że wydajność kodu zależy od tego, czy ISA jest dostosowana do semantyki języka programowania.
Twierdzisz, że "można spokojnie napisać kompilator", "Bez żadnego problemu", "zadanie dla studenta 3-go roku informatyki", ale nawet nie zajrzałeś do wyników cc65, nie wspominając o jego algorytmach optymalizacji.
Jeśli nie było to dla Ciebie interesujące, to skąd tak śmiałe tezy?
Myślisz zbyt "szablonowo" - język wejściowy to jedno, kod generowany to drugie. Można spokojnie napisać kompilator
(...)
nie przyglądałem się temu jak wygląda wygenerowany kod maszynowy.
Ciekawe podejście do problemu.
Dzięki za odpowiedzi! Autor posta chyba popłynął. W komentarzu ktoś mu wytknął, że nie wszystkie myszki działają z pasywną przejściówką.
Hmmm, nie szukają w tym WDC inżyniera kompilatora? ;)
Z C na 6502 są dwa podstawowe problemy:
większość kodu operuje na intach, które są co najmniej 16-bitowe
mocno używany jest stos, a 6502 oferuje tylko dostęp do elementu na wierzchu i ma mały stos
65816 rozwiązuje oba te problemy. Nie widziałem kodu wygenerowanego dla 65816, ale mogę się założyć, że jest znacznie bardziej wydajny, niż dla 6502.
atari.area forum » Posty przez Fox
Wygenerowano w 0.066 sekund, wykonano 23 zapytań