2,676

(27 odpowiedzi, napisanych Zloty)

Może by się organizator wypowiedział? Mnie w piątek może po prostu nie być w Warszawie. Ale może będę, jeszcze nie wiem. Więc moze z tak niepewnego powodu nie warto przenosić ustalonego terminu - najwyżej będzie jednego spożywcę mniej ;)

2,677

(41 odpowiedzi, napisanych Software, Gry - 16/32bit)

Co to ma być, flejm bez mojego udziału? ;)

2,678

(27 odpowiedzi, napisanych Zloty)

Mi piątek nie za bardzo pasuje. Wolałbym wcześniejszy termin.

2,679

(44 odpowiedzi, napisanych Software, Gry - 16/32bit)

Myślałem, że to się odnosi tylko do lewaka ;)

2,680

(51 odpowiedzi, napisanych Różne)

Ale w ten sposób samo nie wyjdzie :P

2,681

(44 odpowiedzi, napisanych Software, Gry - 16/32bit)

sqward napisał/a:

Ale się człowiek frajerzył za młodu, że zamiast
  mulu  #2,d0
  move.w (a0,d0.w),d1
pisał:
  add.w d0,d0
  mode.w (a0,d0.w),d1

sqward, rozumiesz ty znaczenie wyrażenia "w porywach"? :P

2,682

(44 odpowiedzi, napisanych Software, Gry - 16/32bit)

No nie, _w_porywach_ jest więcej, mnożenie jest prawie 2x szybsze ... (40 vs 70 cykli) :)

2,683

(44 odpowiedzi, napisanych Software, Gry - 16/32bit)

Ja od siebie dodam tyle, że przejrzałem manual od 68000/68010 i żadnych "instrukcji istniejących w 68000 a nieistniejących w 68010" tam nie widzę. :)

2,684

(11 odpowiedzi, napisanych Software, Gry - 16/32bit)

Wykrywasz, czy komputer to MegaSTE, i jak tak, to ma 16k (ponoć) cache'u. A jak wykryć, że MSTE - zajrzeć do Cookie Jaru.

2,685

(11 odpowiedzi, napisanych Software, Gry - 16/32bit)

Obecnośc cache sprawdzasz według tabelki:

68000 - brak
68010 - w zasadzie też brak
68020 - 256 bajtów (oidp)
68030 - dwa razy tyle, co w 68020
68040 - 4k
68060 - 8k

Szybkość pracy sprawdza się po prostu mierząc czas wykonywania się prostej pętli.

2,686

(44 odpowiedzi, napisanych Software, Gry - 16/32bit)

leniuk napisał/a:

program ktory podnienia instrukcjie nieistejaca z68000 ktora nieistnieje w 68010-byla to instrukcjia dodawania jak dobrze pamietam

Skądżeż. Może jedynie chodzić o instrukcję "move from SR", która w 68010 jest uprzywilejowana, a w 68000 nie. Nie wektor nielegalnej instrukcji się podmienia, tylko naruszenia uprzywilejowania. I TOS 2.06, wydaje mi się, już odpowiedni kod zawiera.

2,687

(44 odpowiedzi, napisanych Software, Gry - 16/32bit)

sqward: niemniej, istnieje kompilator, który produkuje pętlę z dbcc. I największy problem, podejrzewam, to nie to, czy on ją produkuje, czy nie, tylko że taka konstrukcja, jak pętla do-while z 16-bitowym licznikiem liczaca wstecz do -1, jest raczej mało prawdopodobna w programie napisanym w C. Gros pętli to przecież for (), potem while(), a do-while daleko w tyle.

Z tym mnożeniem i dzieleniem troche przesadziłem jednak:

1) m68k divs: 158 cykli plus obliczenie adresu efektywnego (np. natychmiastowy 16-bit 4 cykle, czyli razem 162)
- 68010: 122

2) m68k divu: 140 cykli (plus j.w.)
- 68010: 108

3) m68k muls: 70 cykli (j.w.)
- 68010: 42

4) m68k mulu: 70 cykli (j.w.)
- 68010: 40

Wszystko to sa czasy maksymalne, ale: "the divide algorithm used by the MC68000 provides less than 10% difference between the best- and worst-case timings. The multiply algorithm requires 38+2*n clocks, where n is defined as:
- mulu: n = the number of ones in <ea>
- muls: n = concatenate the <ea> with a zero as the LSB; n is the resultant number of 10 or 01 patterns in the 17 bit source, i.e. the wors case happens when the source is $5555".

2,688

(44 odpowiedzi, napisanych Software, Gry - 16/32bit)

macgyver napisał/a:

przy operacjach obliczeniowych typu mnożenie i dzielenie, które potrafi na 68000 zajmować po kilkadziesiąt taktów zegara

Kilkadziesiąt? Optymista. divu to chyba ze 200 cykli.

2,689

(44 odpowiedzi, napisanych Software, Gry - 16/32bit)

Oidp, gcc 2.95.2 produkuje dbcc, jeśli się zrobi pętlę do-while, z licznikiem typu short int, zliczającą wstecz do -1 :)

    short int i = 1000;

    do
    {
        printf("%x\n", i);
        i--;
    } while (i != 0xFFFF);

Odbiór jednego bajtu trwa ~1000 cykli, przerwanie odbioru szeregowego występuje z grubsza co tyle czasu.

Patrzę sobie na procedurę dli3 u ciebie, ile tam jest rozkazów STA WSYNC? O ile dobrze liczę, dziewiętnaście? Kazdy haltuje procesor na całą linię skaningową, czyli 114 cykli. 114*19 = okres 2166 cykli, kiedy procesor jest albo zatrzymany, i nie może odpowiedzieć na IRQ z Pokeya, albo obsługuje DLI, i tez nie może odpowiedzieć na IRQ z Pokeya. Transmisja szeregowa nie ma szans po prostu :)

Nie powiem, żebym się orientował, ale:

1) odczyt ze stacji jest na przerwaniach IRQ (1 bajt = 1 przerwanie). Jeśli przeciążysz NMI, to zabraknie czasu na przerwania szeregowe i transmisja będzie się wykładać.

2) miganie to może objaw błędu w 6502, tego co to że kiedy dwa przerwania (NMI i IRQ) występują na raz, jedno jest obsługiwane, a drugie ignorowane. Tego nie ma na emulatorze, i na 65C816, tak samo było z IK+ (program działa na emulcu i na komputerach z '816, na zwykłych Atari nie).

2,692

(11 odpowiedzi, napisanych Software, Gry - 16/32bit)

Np.

what_cpu
    clr.l d0
    moveq #$01,d1
    lea table,a0
    move.b (a0,d1.l*2),d0
    rts

table: .byte 0,0,1

Jeśli po jsr what_cpu w d0 będzie 0, to mamy Motkę 68000 albo 68010. Jeśli 1, to 68020-60. O ile mi wiadomo, tylko tyle da się zrobić w userze, dokładniejsze testy się robi w superwizorze przez ustawianie wektora nielegalnej instrukcji i wypróbowywanie kolejnych rozkazów (typu: jesli "move from ccr" nie wychodzi, to to jest 68000) oraz rejestrów (np. 68020 od 68030 i 68040 odróżnia się po zachowaniu rejestru CACR). W końcu 68060 od 68040 odróżniamy przez próbę wykonania mnożenia z wynikiem 64-bitowym, co mają wszystkie procesory od 68020 do 68040, a 68060 nie.

Dokładna procedura jest do obejrzenia np. tutaj:

http://sparemint.atariforge.net/cgi-bin ... web-markup

Etykieta "detect_cpu".

PS. Grzebanie się w tym samemu ma sens oczywiście tylko pod TOS-em. MiNT robi pełną detekcję CPU i FPU, więc celem dowiedzenia się, jaki jest procesor, wystarczy zajrzeć do Cookie Jaru.

2,693

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

jellonek napisał/a:

drac030: z twojego opisu wnioskuje ze taki QE/Sparta/ARC na warpie nie przyspiesza?

Na Warpie "stare" 64k chodzi na 1,77 MHz, więc wszystko co znajduje się w tej pamięci, chodzi z szybkością normalną. Pewne rzeczy jednak można przyśpieszyć przez napisanie specjalnej wersji np. QE czy sterownika do twardego dysku, która ładuje się do fastramu i tam działa. QE takie już napisałem, sterownik do IDEa jest dopiero w planach.

2,694

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

Oczywiście. Pamięć bankowana jest w Atari, a liniowa jest na karcie.

2,695

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

Parę uwag:

1) laoo ma Warpa 7 MHz, tak samo krap (ale krapa warp jest wadliwy). & MHz dlatego, że stare procesory (4 MHz, od Apple IIGS i z tym podobnych źrodeł) dają się przetaktować tylko do tej szybkości. Teraz są już procesory 14 MHz, więc przeróbka Warpa laoo na 14 MHz powinna być możliwa.

2) ja nie mam Warpa, tylko F7, 10 MHz. Dlaczego dziesięć, to się już trzeba pytać pasia, ale w Głuchołazach była mowa o tym, że jedna karta (z dwóch wówczas istniejących) nie chce działać stabilnie na 14 MHz z niewiadomych przyczyn. Zapewne jest to ta obecnie "moja". Po paru tygodniach użytkowania mogę stwierdzić, że przy 10 MHz stabilność jest idealna. Rozumiem też, że docelowo (seryjnie) ma być jednak 14 MHz.

3) fastram w F7 i w Warpie jest pamięcią statyczną.

4) F7 ma tryb kompatybilny (z Warpem) i dopalony - w którym przyspiesza też stare programy. Tryb wybiera się pstryczkiem na panelu.

5) Różna szybkość taktowania różnych dopałek - a nawet różna szybkośc pracy przy tym samym szybkim zegarze, bo przy odwołaniach do starych 64k Warp będzie zwalniał i to na dodatek o nieprzewidywalną liczbę cykli - faktycznie utrudnia cyklowanie, ale jak się kto uprze, zawsze może na opczątku zmierzyć szybkość działania CPU i odpowiednio do tego dobrać opóźnienia w programie.

6) Przyspieszenie starych aplikacji ja osobiście sobie chwalę, przyspiesza to DOS (odczyt plików pod Spartą skoczył z 60 do 80 kilobajtów na sekundę), przyspiesza to asemblację, a edytor MAE, jeszcze po załadowaniu QE do fastramu, po prostu śmiga. Że o głupim pakowaniu plików przez ARC pod Spartą nie ma co wspominać (ZIP-a jeszcze nie mamy).

7) Tez jestem za tym, żeby ilość fastu w dopałkach nie schodziła poniżej 1 MB. Duddie chce robić Warpy z 16 MB fastu (na dynamicznej pamięci).

2,696

(27 odpowiedzi, napisanych Zloty)

Ja chętnie.

2,697

(10 odpowiedzi, napisanych Miejsca w sieci)

Może ten http://web.archive.org/web/200001241821 ... index2.htm

2,698

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

jell: no sam widzisz :P

Cytuję: "Konieczność istnienia i używania tego sygnału (RST) stanie się oczywista, gdy sobie uświadomić, że po włączeniu zasilania zawartość wszystkich rejestrów mikroprocesora może być (i jest) przypadkowa. (...) Napięcie Vcc rośnie (...) do 5 V. Układ zegara zaczyna działać jeszcze przed osiągnięciem 5 V, a na pewno działa poprawnie przy 4,75 V. Tak samo mikroprocesor: przy 4,75 V jest juz gotów do normalnej działalności. Od tej chwili powinien jeszcze co najmniej przez dwa takty dostawać sygnał zerowania (tj. RST = 0)".

Wozniakowi pewnie nie chciało się robić układu opóźniającego start do momentu "pozbierania się", jak to ujął Seban, wszystkich układów po włączeniu zasilania. W rzeczy samej, dużo łatwiej jest napisać w manualu "Hit RESET first" :P

2,699

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

jellonek: widać w Apple włączenie zasilania nie powoduje podania procesorowi sygnału RESET. Ergo: nie jest to poprawnie zaprojektowany system :)

2,700

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

seban napisał/a:

oto moja skromna teoria dotycząca włączania się naszych ATARI

Dokładnie tak jest, procedura wskazywana wektorem RESET sprawdza, czy komórki $033d-$033f zawierają kolejno $5c, $93, $25 i jeśli tak jest, OS wybiera procedurę ciepłego startu, a w przeciwnym wypadku zimnego. Dodatkowo jeszcze potem, jeśil OS wybrał już ciepły start, a pod $0244 jest wartość różna od zera, następuje przejście do startu zimnego.

Metoda jest tyleż prosta, co skuteczna, pod warunkiem jak wyżej, że wyłączenie zasilania powoduje skasowanie zawartości RAM-u...