[#31] Re: Tworzenie własnych kickstartów

@glichtanski, post #23

Ja na 030/25 i 040/25 (gdy nie mam superkickstartu) remapuję kickstarty softbootem.
[#32] Re: Tworzenie własnych kickstartów

@Rafał A-3000, post #31

Jak?
[#33] Re: Tworzenie własnych kickstartów

@glichtanski, post #32

Dla 030:
Softboot nobuseerror devs:kickstart
dla 040:
softboot nocachez2 nocachez3 nobuseerror devs:kickstart

Nie pamiętam, czy dla 030 jest potrzebne nobuseerror - możesz spróbować bez.
Na 040 przy tych opcjach prawie nie miałem problemów. Przy ich braku jakoś często miałem guru 800000B czy jakoś tak.
Program Softboot używam gdy mam kickstart 2.04. Te dwa o których wspomniałeś wcześniej też mi nie działały. Teraz jak widzę obaj będziemy mieli zamienniki. pomysł

Edit: Mam dwa skrypty w c: k3 i k4 (by było szybciej).

Ostatnia aktualizacja: 26.10.2014 22:35:48 przez Rafał A-3000
[#34] Re: Tworzenie własnych kickstartów

@Rafał A-3000, post #33

Ten Kick nie działa w A3000. Niby się uruchamia, ale nie wgrywają się wszystkie biblioteki. Po zainstalowaniu OS3.9 Brakuje ikonek GlowIcons w niektórych folderach, nie wgrywa wszystkich programów.

Teraz coś zmieniłem w plikach romów i nie mogę uruchomić ani dyskietki Install3.1, ani emergency - OS3.9 bez usunięcia z s-s C:SetPatch. Wtedy system działa z dyskietki, ale nie wgrywa wszystkich bibliotek.

Daję sobie spokój z tym customowym duszenie kupki . Wystarczy mi ten co mam.
[#35] Re: Tworzenie własnych kickstartów

@glichtanski, post #34

Ja robiłem wg tego poradnika (generalnie super strona). Jakby ktoś miał problem z customem warto zacząć lekturę tego linka.
[#36] Re: Tworzenie własnych kickstartów

@QkiZ, post #35

Też robię wg tej strony i nie działa to poprawnie. Wygląda to tak, jakby SetPatch sprawiał problem, próbowałem dopisać SKIPROMUPDATE, NOROMUPDATE ale za każdym razem system zatrzymuje się z otwartym oknem CLI i wyświetlanym błędem dotyczącym argumentu dodanego do SetPatch.
Bez SetPatch system się uruchamia, ale nie ładuje wszystkich bibliotek.

Identyczną sytuację z SetPatch miałem przy okazji instalacji karty GVP HC 2000-II i chyba z kartą turbo 040. System resetował się w trakcie bootowania, winny też był SetPatch. Po jego usunięciu system startował, oczywiście bez niektórych bibliotek.

Ostatnia aktualizacja: 27.10.2014 13:59:12 przez glichtanski
[#37] Re: Tworzenie własnych kickstartów

@glichtanski, post #36

Jak wrócę z pracy to napisze co mam wpisane w SetPatch.
[#38] Re: Tworzenie własnych kickstartów

@QkiZ, post #37

Pewno masz SKIPROMUPDATE albo skiprommodule.
[#39] Re: Tworzenie własnych kickstartów

@glichtanski, post #36

Na 040 coś jest z setpatch. Też pamiętam, że długo szukałem odpowiedniej wersji tej komendy dla OS 3.5.
[#40] Re: Tworzenie własnych kickstartów

@glichtanski, post #38

Mam setpatch quiet. To wszystko.
[#41] Re: Tworzenie własnych kickstartów

@Don_Adan, post #20

A jednak startuje spod F80000. Tak przynajmniej wyświetla SysInfo.
[#42] Re: Tworzenie własnych kickstartów

@Don_Adan, post #20

A czy A3000 ma ks1.3, żeby startowało z spod FC0000? to z jakiego adresu startuje kickstart, lub pod jakim adresem jest exec zależy od rozmiaru kickstartu i tak kickstart 256kB znajduje się pod FC0000, kickstart 512kB znajduje się pod F80000, a kickstart 1MB znajduje się pod E00000.

A tak w rzeczywistości to wszystko startuje spod adresu E00000, a jeszcze rzeczywiściej spod adresu 0, bo pod ten adres jest przemapowany cały kickstart po resecie. Kickstart, który ma 512kB i 256kB istnieje pod adresem E00000 dzięki takiemu zjawisku jak mirroring, który wynika z tego, że do podstawki jest włożona kość z mniejszą ilością linii adresowych niż w podstawce, potem już idzie z górki, ponieważ pierwsza instrukcja kickstartu to skok do execa (w przypadku ks1.3 jest to adres FC00xx). Nie ma znaczenia, gdzie oryginalny kickstart ma execa, ważne aby pierwszą instrukcją w kickstarcie był skok pod jego adres. Romheader w pakiecie Remusa to zwykły skok pod adres F800xx, stąd właśnie exec jest zawsze na początku listy, aby adres execa pokrywał się z tym, zawartym w romheader.
[#43] Re: Tworzenie własnych kickstartów

@sanjyuubi, post #42

Co do A3000 to zalezy o jaki model Ci chodzi, pierwsze A3000
mialy zdaje sie kickstart 1.4, a to byl zdaje sie 256KB ROM, wiec
start musial byc spod $FC0000.
No i mylisz dwie sprawy, adres execa i adres startu kickstartu to sa
dwie rozne rzeczy. Adres execa moze byc w dowolnym miejscu w ROMie,
choc jest zwykle na jego poczatku, ale to dlatego, ze programy kompilujace
kickstart sa tak ustawione, azeby exec byl na poczatku.
Ale adres startu kickstartu nie moze byc dowolny. Ja znam tylko dwa
$FC0000 i $F80000. I kazdy 0.5MB kickstart Commodore ma oba start adresy.
Wiec jezeli jakis program albo hardware Amigi stara sie skoczyc pod
$FC0000+2 a tam nie ma skoku do $F80000+2 (albo od razu do execa) to sie
po prostu wywali.
Myslisz, ze na jakiej zasadzie ROM 2.0/3.0/3.1 dziala w A500 czy A2000?
Na pewno nie na takiej, ze hardware sam rozpoznaje, ze ma doczynienia
z kickiem 512KB a nie z kickiem 256KB, tylko skacze w ciemno pod
$FC0000+2.

Jedynie oryginalny 1MB kickstart Commodore, ktory jest/byl tylko dla A1200,
ma tylko jeden start adres spod $F80000.
Co do CD32 i jego 1MB ROMu to nie wiem, ale pewnie tez jest tylko jeden.

No i bynajmniej ROM nie jest przemapowywany pod adres 0, no bo po co?
Jakby tak bylo to niemozliwe byloby by rypanie/wyciaganie muzyki z pamieci.
Sporo sie bawilem Action Replayem to wiem, ze pamiec nie jest czyszczona
przez ROM po resecie.
[#44] Re: Tworzenie własnych kickstartów

@sanjyuubi, post #42

Co do A3000 to zalezy o jaki model Ci chodzi, pierwsze A3000
mialy zdaje sie kickstart 1.4, a to byl zdaje sie 256KB ROM, wiec
start musial byc spod $FC0000.
No i mylisz dwie sprawy, adres execa i adres startu kickstartu to sa
dwie rozne rzeczy. Adres execa moze byc w dowolnym miejscu w ROMie,
choc jest zwykle na jego poczatku, ale to dlatego, ze programy kompilujace
kickstart sa tak ustawione, azeby exec byl na poczatku.
Ale adres startu kickstartu nie moze byc dowolny. Ja znam tylko dwa
$FC0000 i $F80000. I kazdy 0.5MB kickstart Commodore ma oba start adresy.
Wiec jezeli jakis program albo hardware Amigi stara sie skoczyc pod
$FC0000+2 a tam nie ma skoku do $F80000+2 (albo od razu do execa) to sie
po prostu wywali.
Myslisz, ze na jakiej zasadzie ROM 2.0/3.0/3.1 dziala w A500 czy A2000?
Na pewno nie na takiej, ze hardware sam rozpoznaje, ze ma doczynienia
z kickiem 512KB a nie z kickiem 256KB, tylko skacze w ciemno pod
$FC0000+2.

Jedynie oryginalny 1MB kickstart Commodore, ktory jest/byl tylko dla A1200,
ma tylko jeden start adres spod $F80000.
Co do CD32 i jego 1MB ROMu to nie wiem, ale pewnie tez jest tylko jeden.

No i bynajmniej ROM nie jest przemapowywany pod adres 0, no bo po co?
Jakby tak bylo to niemozliwe byloby by rypanie/wyciaganie muzyki z pamieci.
Sporo sie bawilem Action Replayem to wiem, ze pamiec nie jest czyszczona
przez ROM po resecie.
[#45] Re: Tworzenie własnych kickstartów

@Don_Adan, post #43

Myslisz, ze na jakiej zasadzie ROM 2.0/3.0/3.1 dziala w A500 czy A2000?
Na pewno nie na takiej, ze hardware sam rozpoznaje, ze ma doczynienia
z kickiem 512KB a nie z kickiem 256KB, tylko skacze w ciemno pod
$FC0000+2.


Już wcześniej to wyjaśniłem, ale chyba przeoczyłeś takie słowo, które nazywa się "mirroring". Jeśli włożysz w podstawkę, która potrafi zaadresować 1MB kość, która ma 256kB, to w przestrzeni adresowej tego 1MB pojawi się 4 razy zawartość tej kości 256kB (B + 0, B + 256kB, B + 512kB, B + 768kB), jeśli włożysz kość, która ma 512kB, to będziesz miał dwa razy zawartość tej kości (B + 0, B + 512kB). Dzięki takiemu zabiegowi jak "mirroring" nie ma znaczenia czy włożysz kość 256kB, 512kB, 1MB, zawsze początek będzie pod E00000 Możesz to sobie sam sprawdzić, włącz sobie amigę i zobacz, że pod adresem E00000 będzie dokładna kopia F80000 (ks 512kB). Mam tłumaczyć dalej na czym to polega?

Jeśli weźmiesz kość 512kB i wgrasz ks1.3 z przesunięciem o 256kB, to ta kość nie zadziała, trzeba wgrać ten kickstart podwójnie co potwierdzą inni forumowicze, którzy parają się programowaniem kickstartów.



No i bynajmniej ROM nie jest przemapowywany pod adres 0, no bo po co?


Proponuję dowiedzieć się czym jest ROM overlay i co robi procesor po resecie (podpowiedź: adres z którego jest czytana pierwsza instrukcja), a wszystko stanie się całkiem jasne. Oczywiście mogę to wytłumaczyć, ale dziwię się, że Ty jako programista grzebiący w assemblerze i bibliotekach systemowych nie wiesz o czym mówię (chociaż jak nie grzebałeś w execu, to może i możesz nie wiedzieć).


Ja mogę się na programowaniu nie znać, ale jak walczyłem z akceleratorem do A600 i mapromem, to się wiele dowiedziałem na ten temat, kości kickstartu też programowałem, w tym nawet 4w1 do A1200 - przejrzyj graffiti rafgc, to był mój poprzedni nick. Mechanizm ROM Overlay został mi wytłumaczony przez Jakuba Bednarskiego (yaqube - modyfikacje źródeł minimiga i autor modułu do fpga arcade z 060 i kartą graficzną z trybem 256 kolorów w 1920x1080).










Ostatnia aktualizacja: 29.10.2014 21:15:15 przez sanjyuubi
[#46] Re: Tworzenie własnych kickstartów

@Don_Adan, post #44

No i bynajmniej ROM nie jest przemapowywany pod adres 0, no bo po co?


Dla ścisłości. ROM jest widoczny pod adresem 0 po twardym resecie (włączeniu) Amigi. Dlatego, że procesory linii 68000 zaczynają wykonanie kodu od adresu 0. Tu nie ma żadnej hardware'owej magii - Kick de facto startuje od adresu 0, po czym jedną z pierwszych rzeczy które robi jest skok pod Fx0000 i wyłaczenie wspomnianego przemapowania. Po wyłaczeniu tegoż pod adresem 0 dostępny jest już Chip RAM.

Myślę, że o to chodziło przedmówcy .
[#47] Re: Tworzenie własnych kickstartów

@strim_, post #46

Tylko że sterowanie pamięci ROM RAM jest realizowane w GARY jeśli chodzi o A3000.
I tu musi być to realizowane sprzętowo. Włączenie zasilania najpierw ROM a potem już tylko CHIP RAM na początkowych adresach. Nie wiem jak inaczej to można rozwiązać, jak jest tam tylko D0 i do zmiany adresu od A12 GARY jest w zasadzie głuchy i ślepy. A na schemacie nie ma nic pomiędzy ROM a GARY jeśli chodzi o sygnał aktywujący kości pamięci.
[#48] Re: Tworzenie własnych kickstartów

@bogumil, post #47

Za to odpowiada sygnał OVL, który wchodzi do Garego z CIA (U350 w A3000). Z kolei Gary generuje sygnał ROMEN. Działanie OVL jest bardzo proste, to jest po prostu rejestr w CIA, pod adresem 0xBFE001.

Jak powiedziałem, po włączeniu zasilania OVL jest aktywne, Kick wykonuje się spod adresu 0, skacze pod 0xF80000 czy tam 0xFC0000, a zaraz po tym skoku, wykonuje zapis pod ten rejestr CIA żeby wyłączyć OVL i mieć pod adresem 0 Chip RAM...
[#49] Re: Tworzenie własnych kickstartów

@sanjyuubi, post #45

Gdyby ROM startowal tak jak to opisujecie, to umieszczanie (drugiego)
start adresu ROMu pod adresem $FC0000 nie mialoby zadnego sensu,
a bylo tylko strata parudziesieciu albo paruset bajtow ze wzgledu
na koniecznosc podzialu/doboru modulow tak zeby maksymalnie wykorzystac
cale wolne miejsce. Kazdy 0.5MB ROM Commodore (oprocz A4kT) jest prawie pelny.
Wiec marnowanie tych bajtow byloby bez sensu. Wiec bardzo watpie,
ze tak jest. Jesli 68000 startuje spod 0 adresu to wystarczy tam dac
tylko JMP $FC0002 albo JMP $F80002 (ja bym tak zrobil), a nie kopiowac
caly ROM do chipu.
Ale mozecie zrobic prosty test, wystarczy zamienic w ROM-ie 0.5MB
wartosc $4EF9 (z JMP) pod offsetem $40002 na $4E75 (RTS). Nagrac
go i wlozyc do A500 (ROM 1.3 albo 1.2). Powinien albo nie dzialac (wedlug mnie),
albo powinien sie wyswietlic kolor bledu CRC/uszkodzonego ROMu (jesli macie racje).

Ponizej jest start ROM-u 0.5MB i nie ma tutaj zadnego wylaczania czy
przemapowania ROMu. Pierwsza (logiczna) rzecza jest wyliczenie CRC ROM-u.
Druga jest skok pod boot ROM pod adresem $F00000, o ile taki ROM jest
podlaczony. Dalej jest inicjacja hardware'u, czyszczenie 8 bajtow spod
adresu 0, ale nie ma czyszczenia calej pamieci chip. A skoro tego nie
ma to na 100% ROM nie jest mirrowany pod adres 0, bo to jest po prostu
bez sensu. Ale jakby byl mirrowany to zawsze w pamieci chip pozostalaby
jakas jego czesc.

lbC0000D2 LEA ($400).W,SP
 LEA ($F80000),A0
 MOVEQ #-1,D1
 MOVEQ #1,D2
 MOVEQ #0,D5
lbC0000E2 ADD.L (A0)+,D5
 BCC.B lbC0000E8
 ADDQ.L #1,D5
lbC0000E8 DBRA D1,lbC0000E2
 DBRA D2,lbC0000E2
 LEA (lbC00010C,PC),A5
 LEA (lbW000000,PC),A0
 LEA ($F00000),A1
 CMPA.L A0,A1
 BEQ.B lbC00010C
 CMPI.W #$1111,(A1)
 BNE.B lbC00010C
 JMP (2,A1)
[#50] Re: Tworzenie własnych kickstartów

@Don_Adan, post #49

To ciekawe, pamiętam że kiedyś analizowałem ROM którejś małej Amigi i na pewno był wykonywany po prostu jump pod FC0000, sprawdzenie czy nie ma ROMu pod F00000, a później wyłączenie OVL.

Z ciekawości, co jest za tym ostatnim jumpem z Twojego kicka? Nie ma tam żadnych odwołań do BFE201 i BFE001?
[#51] Re: Tworzenie własnych kickstartów

@Don_Adan, post #49

Gdyby ROM startowal tak jak to opisujecie, to umieszczanie (drugiego)
start adresu ROMu pod adresem $FC0000 nie mialoby zadnego sensu,
a bylo tylko strata parudziesieciu albo paruset bajtow ze wzgledu
na koniecznosc podzialu/doboru modulow tak zeby maksymalnie wykorzystac
cale wolne miejsce.


Twórcy Amigi postanowili wyrównywać kickstart do końca pamięci adresowej stąd w kickstarcie 256kB masz execa pod FC00D2. Bez sensu jest komentowanie czy ma to sens czy nie skoro nie mamy na to wpływu.


Jesli 68000 startuje spod 0 adresu to wystarczy tam dac
tylko JMP $FC0002 albo JMP $F80002 (ja bym tak zrobil), a nie kopiowac
caly ROM do chipu.


I tutaj właśnie wychodzi na jaw, że Twoje rozumowanie opiera się na nieprawidłowych założeniach. Po pierwsze, po włączeniu Amigi w pamięci są same losowe wartości, po drugie, gdybyś na stałe zakodował w elektronice istnienie sztywnej komórki powodującej skok do FC00D2 pod adresem 0, to nie mógł byś używać innych kickstartów w których exec byłby pod F800xx (poza tym właśnie zaproponowałeś coś, co potępiłeś w Remusie). Po resecie 68000 ładuje wartość spod adresu 0 na stos a spod adresu 4 do licznika programu, skąd ma się pod adresem 4 wziąć instrukcja skoku do FC00D2 albo F8 po włączeniu Amigi?

Kto mówił cokolwiek o kopiowaniu, widać tutaj, że myślisz na warstwie programowej, podczas gdy to o czym piszę wykonywane jest na warstwie sprzętowej. Zobacz teraz jakie błędne koło stworzyłeś, bo żeby skopiować niby kickstart pod adres 0 to po resecie procesor przecież musi wykonać skok do takiej procedury, a skąd niby ma się pod adresem 0 wziąć taki skok? Poza tym po co kopiować kickstart, skoro procesor już wykonuje kod z kickstartu, w ten sposób naprawdę to brzmi bezsensownie.

A skoro tego nie
ma to na 100% ROM nie jest mirrowany pod adres 0, bo to jest po prostu
bez sensu. Ale jakby byl mirrowany to zawsze w pamieci chip pozostalaby
jakas jego czesc.



Mirroring kickstartu jest efektem konstrukcji sprzętu, a nie wynikiem jakiegoś kopiowania przez program, jest to proces całkowicie niezależny od procesora. Kickstart po resecie nie jest kopiowany pod adres 0 a jest dekodowany przez układy amigi pod adresem 0, chipram po resecie nie jest dekodowany, pierwszy zapis do CIA powoduje wyłączenie ROM Overlay (kiedyś był tam specjalny bit) i kickstart przestaje być dekodowany pod adresem 0 a pojawia się w tym miejscu chipram.


Kiedy patrzałem co robi procesor po resecie na ks3.1 używając analizatora logicznego, to pierwsze 4 odczyty w A600 były spod 0,2,4,6 a potem spod F8.

Aros zmapowany do Ramu nie będzie działał, jeśli po resecie nie będzie jego odbicia pod adresem 0, oryginalne kickstarty po prostu wykonywały skok na początku pod właściwy adres, a aros mieli trochę kodu zanim wyłączy OVL.

Jak nie chcesz wierzyć to może zapytaj się jakiegoś innego autorytetu np. Toniego Willena, może speedgeeka, włącz debugger w winuae i zobacz co się dzieje po resecie, poszukaj w necie...

Amiga Hardware reference manual - strona 219
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem