2,676

(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,677

(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,678

(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,679

(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,682

(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,683

(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,684

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

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

2,685

(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,686

(27 odpowiedzi, napisanych Zloty)

Ja chętnie.

2,687

(10 odpowiedzi, napisanych Miejsca w sieci)

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

2,688

(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,689

(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,690

(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...

2,691

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

tebe napisał/a:

gdzie skacze 6502 po uruchomieniu, nie mam na myśli wektora RESET-u, tylko adres bodaj $C....  ?

Dziwne pytanie. Po uruchomieniu 6502 skacze pod adres wskazywany wektorem RESET ($FFFC/D).

2,692

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

Jakie tam arcydzieło - 64k RAM-u, czyli za mało, zeby uruchomić jakikolwiek współczesny program; bezużyteczny modem 300 bodów, kiedy obecnie byle gie ma 56k; syntezator mowy na układzie nieprodukowanym od ćwierć wieku, komplenie nieoprogramowany; dupne video jak to w XL (najlepsze jest ono w 130XE); ch*jowe PBI z serii XL, gdzie brakuje istotnych sygnałów w rodzaju 5V :) No i oczywiście, nie ma plomby, bo nawet jak była, Curt Vendel juz dawno wydłubał :>

Płacisz za to 10 tauzenów i potem boisz się dotknąć, że nie wspomnę juz o zainstalowaniu najgłupszego rozszerzenia pamięci do 320k, żeby można było coś na tym zrobić.

2,693

(14 odpowiedzi, napisanych Sprzęt - 16/32bit)

artik-wroc napisał/a:

Natrafiłem na pewien problem. Podłączyłem do mojej atarki zewnętrzną stację dysków (tak dokładniej są to dwie przełączane stacje 3,5 i 5,25 cala). Dyskietki sformatowane w drugiej stacji, nie dają się odczytać w pierwszej i vice versa (a pokazywane pojemności są identyczne).

Znaczy, dyskietki zapisane w stacji 3,5" nie dają się czytać w stacji 5,25"? Czemu mnie to nie dziwi? :>

2,694

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

Chyba nikt nie sprzątnął, po prostu aukcja się skończyła, zob, "History: 0 bids". Swoją drogą, trzeba upaść na głowę, żeby  za takie nietypowe 800XL płacić prawie 10 tysięcy złotych, skoro normalne 800XL można mieć za dwie dychy... :>

2,695

(10 odpowiedzi, napisanych Bałagan)

mikey laoo pewnie chodzi jeszcze o to, żeby flasza mozna było flaszować z poziomu atari. Tu zachodza pewne hinty.

Hint pierwszy: flasz ma dwa specjalne adresy, $2aaa i $5555, przez które się z nim wstępnie rozmawia przed programowaniem. Flasz musi być tak umieszczony w pamięci, żeby oba te adresy były dostepne dla 6502.

Hint drugi: flasz ma "software write protection", ale ona działa np. tak, że jak się cos w tym trybie próbuje mu zapisać, to on blokuje odczyt na dość długi czas (chyba się $FF-y pojawiaja w miejscu normalnych danych). W Atari oczywiście nie ma metody, żeby zabronić programom mazania po ROM-ie, a taka Sparta X to nawet specjalnie w adresie $CFFF grzebie patrząc, czy się rozszerzenie Axlon nie znajdzie. Na takie dictum flasz pojawia się i znika, oczywiście prędzej czy później występuje VBL, a w miejscu ROM-u zamiast wektorów i kodu jest akurat sieczka i następuje zwis. Atmel nazywa to featurą :)

W kazdym razie trzeba zrobić prawdziwy, sprzętowy write-protect, jakmiś portem, albo najlepiej przełącznikiem.

2,696

(31 odpowiedzi, napisanych Software, Gry - 8bit)

Mozesz zacząć od sprawdzania najbardziej podejrzanych: CS.SYS, SSDXBNK.SYS, IDEFAST. Jeśli to jest SpartaDOS X 4.22 (a nie 4.20), to zwłaszcza CS.SYS może miec problemy. Nad krążącymi wersjami QE też już dawno straciłem kontrolę, więc nie wiem, czy plik, który masz, dobrze działa na 4.22.

Jeśli masz interfejs IDEa albo wersję JŻ z ośmioma zworkami (na IDEa jest napisane Device ID przy nich), to możesz zrezygnowac z IDEFAST zupełnie. Wystarczy przełączyć zworką ID z #0 na #7.

2,697

(31 odpowiedzi, napisanych Software, Gry - 8bit)

Sparta 3.2x a X 4.2x to są dwa kompletnie różne DOS-y, więc brakiem konfiga w SD 3.2 bym się nie przejmował.

DEVICE SPARTA i DEVICE SIO są obowiązkowe i muszą być na początku CONFIG.SYS. Przed nimi jeszcze musi być USE (USE BANKED w twoim wypadku). Zwłaszcza przed/zamiast DEVICE SIO nie może być np. DEVICE RAMDISK. Kolejność się liczy, jak w przykłądzie powyżej (post #17).

Reszta konfiga jest mniej restrykcyjna i poza tymi trzema wpisami pozostałe moga być już w dowolnej kolejności wobec siebie.

Remować można dopiero od SDX 4.39 :)

Jeśli dajesz taki CONFIG.SYS na D1:

USE BANKED
DEVICE SPARTA
DEVICE SIO
DEVICE RAMDISK I:

i po restarcie na I: nie ma sformatowanego ramdysku, to coś jest spieprzone (uszkodzony kartridż?).

2,698

(31 odpowiedzi, napisanych Software, Gry - 8bit)

Masz zwis przy próbie formatowania ramdysku? To chyba cos nie tak ze sprzętem. BTW. RAMDISK.SYS sam zapisuje katalog na wskazanym dysku, więc żadnego kombinowania być nie powinno. Co ci wyświetla polecenie MEM?

2,699

(31 odpowiedzi, napisanych Software, Gry - 8bit)

Mając SIO2PC możesz przypisać je do D2:, a resztę identyfikatorów (D1:, D3: itd.) do HDD. W takim układzie, nawet jeśil masz starą Spartę, system będzie ci startował z HDD (z D1: ), oraz będziesz miał dostęp do seriala przez D2: (na przykład). Żeby partycja HDD przestała okupować identyfikator dysku, wystarczy w FDISK-u II najechać na nią kursorem i dać Ctrl/A. Gdy zniknie znaczek "Act", trzeba zapisać tablicę partycji (Ctrl/W), wyjść z FDISK-a, i najlepiej zrobić reset dla pewności. Od tej chwili masz dostęp i do HDD i do SIO2PC.

Sparta powinna automatycznie założyć ramdysk, o ile komputer ma ponad 128k RAM-u.

Defaultowy CONFIG.SYS w 4.20 jest zaszyty w bebechach Sparty i bez debuggera się do niego nie dostaniesz :) Dopiero 4.39 ma to w postaci jawnie dostępnego pliku na dysku CAR: Własny plik CONFIG.SYS musisz (w 4.20) dać na dysk D1:, ten dysk musi być w formacie SpartaDOS-u. Może to wyglądać np. tak:

USE BANKED
DEVICE SPARTA
DEVICE SIO
DEVICE RAMDISK I:,n

gdzie 'n' to liczba banków, jaką ma zająć ramdysk. Np. przy 320k max. to 15 banków (bo jeden zajmuje sama Sparta dla siebie).

pin: tego baga ma tylko mnt lizarda :)

2,700

(31 odpowiedzi, napisanych Software, Gry - 8bit)

Tebe, przecież do interfejsu jest całkiem szczegółowa instrukcja, gdybyś do niej zajrzał, większość tych pytań miałbyś z głowy. Po drugie, z objawów wnoszę, że masz SpartaDOS X 4.20 - on widzi tylko 9 dysków - oraz FDISK 1.40, który powinieneś sobie wymienić na 2.x. Ta wersja pozwala m.in. na włączanie i wyłączanie partycji.

http://drac030.krap.pl
http://atariki.krap.pl/index.php/IDE_JZ/KMK/FDISK_II

EDIT:

tebe napisał/a:

ok, w fdisku usunałem informacje o wielkości partycji, teraz nie widzi D8 i D9 (Drive not present), moge podpiać pod nie stacje i ramdysk?

Ramdysk możesz podpiąć zawsze pod wszystko bez usuwania HDD z danego numerka napędu, bo ramdysk zawsze jest "na wierzchu" - kolejność obsługi jest taka: ramdysk, jeśli go nie ma to HDD, jeśli tego z kolei nie ma, to SIO.

Jak niżej napisał trub, w nowszej SDX można to dodatkowo regulować komendą MAP.