Aktualności Forum Graffiti Publicystyka Teleport

Komentowana treść: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira
[#61] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #59

Ciekawe czy dalej by działał gdyby wywalić z Kickstartu wszystkie elementy AmigaOS.
To zależy od sposobu uruchomienia. W zasadzie można zaryzykować stwierdzenie „nie działałby”, ponieważ nawet jeżeli zapisalibyśmy go na „niedosowej” dyskietce, czyli startowałby się z bootblocka, to jednak kod, który skłania Amigę do załadowania bootblocka z dyskietki, znajduje się w Kickstarcie.

Ale są tzw. Kickstarty diagnostyczne – układy które wstawiasz do Amigi zamiast Kickstartu. Taki diagkick to niewątpliwie program. Ale z systemu operacyjnego Amigi korzystać nie może, skoro go w całości fizycznie zastępuje. Teoretycznie możesz mieć np. grę jako Kickstart, korzystającą w 100% tylko ze sprzętu. To oczywiście bardzo niepraktyczny sposób dystrybucji oprogramowania, więc nikt tak nie robi, a diagkicki służą do serwisowania Amig.
[#62] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #61

Niektóre dema mają swój "system operacyjny", jak chociażby wspominany tutaj jakiś czas temu SOS (Sanity Operating System) w demie Arte. Te dema w praktyce przejmują pełną kontrolę nad systemem, dostarczają zapewne obsługę wszystkich przerwań.

Dość bolesną wadą takich rozwiązań, która wyszła nieco później jest brak zupełnie możliwości instalacji takich dem na dysku twardym. A nawet, w przypadku dyskietek nie zawsze się ładują, jak jest w przypadku mojej konfiguracji Amigi.

Przejęcie każdej mikrosekundy jest bardzo fajne, ale czasem trzeba mieć i tu umiar.
[#63] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira
Ma ktoś może najnowsze vbcc na windows już skompilowane?

Mam jakieś stare od asmana. Zaciekawiony generowanym kodem na filmie, sam sprawdziłem jak kompiluje się jedna z pętli:

while(size--){
*dst++ = *src++
}

zajmuje 9 instrukcji, po kilku kombinacjach taka pętla

while(size){
*dst = *src;
src++; dst++;
size--;
}

zajmuje 4 instrukcje, niby to samo a co innego.
[#64] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #63

Co ciekawe gcc5 i gcc6 generuja dosc zabawny kod. Przetestowalem 3 rozne wersje petli:

while(size--) {
    *dst++ = *src++;
}

while(size) {
    *dst = *src;
    dst++; src++; size--;
}

do {
    *dst++ = *src++;
} while(--size);


po skompilowaniu z -O2 -m68020 otrzymalem nastepujacy kod (tylko glowna petla):

.L3:
	move.l (%a1)+,(%a0)+
	dbra %d0,.L3
	clr.w %d0
	subq.l #1,%d0
	jcc .L3

.L9:
	move.l (%a1)+,(%a0)+
	subq.l #1,%d0
	jne .L9

.L14:
	move.l (%a1)+,(%a0)+
	subq.l #1,%d0
	jne .L14


-O1 dalo tak samo optymalny kod dla wszystkich trzech petli. Wniosek - nie zawsze O2 jest jepsze... ;)
[#65] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #64

Trzeba przyznać, że poniższa wersja jest naprawdę dobra. Na slajdach dla zmiennej size użyłem typu WORD (aka signed short) stąd mogła wskoczyć optymalizacja z dbra. W tym kawałku kodu kompilator ładnie uogólnił optymalizację dla signed int.

.L3:
	move.l (%a1)+,(%a0)+ # ta pętla wykona się max. 65536 razy
	dbra %d0,.L3
	clr.w %d0            # ta część wykona się (size / 65536) razy, więc się nie liczy
	subq.l #1,%d0
	jcc .L3

Jak potrzebujecie więcej plików do testów to polecam funkcje biblioteki standardowej języka C ze źródeł systemu OpenBSD. Gdybyś ktoś z Was miał czas oraz chęci przedstawić i porównać działanie optymalizacji z VBCC vs. GCC 6.2 byłbym wdzięczny. Zapewne miażdżącą przewagę będzie miał GCC, ale trzeba to pokazać.
[#66] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #65

Ja dopiero poczatkujacy w asmie wiec prosze nie bic, ale co robi instrukcja DBRA?
Przeszperalem wszystkie mozliwe manuale i pisza w nich ze koncowka RA nalezy tylko do instrukcji typu Bxx.
[#67] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #66

ta sama koncowka nalezy do instrukcji typu DBxx. Od Bxx roznia sie literka D jak Decrement. Instrukcje DBxx (Decrement and Branch) sprawdzaja flagi (w zaleznosci od xx), nastepnie, jezeli warunek *nie jest* spelniony, zmniejszaja zawartosc zadanego rejestru o 1 (ale *tylko* 16 bitow) i wykonuje skok w zaleznosci od wyniku.

DBRA wykonuje sie zawsze, zmniejsza rejestr o 1 i wykonuje skok jezeli 16-bitowa wartosc rejestru *po zmniejszeniu* jest inna niz -1.

PS: Skopalem opis, okazalo sie ze zapomnialem jak naprawde dzialaja DBxx ;D

Ostatnia aktualizacja: 15.12.2016 11:48:28 przez mschulz

Ostatnia aktualizacja: 15.12.2016 11:51:46 przez mschulz
[#68] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #66

Według mnie powinno być dbf zamiast dbra. Ale utarło się dbra (w WinUE to zobaczysz wtedy dbt bodajże) i znakomita większość asemblerów dopuszcza takie dbra.

Zajrzyj tutaj jest użycie dbeq na przykład 68000 TRICKS AND TRAPS

Ostatnia aktualizacja: 15.12.2016 11:49:19 przez asman
[#69] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #68

Jesli DBRA == DBF to wszystko jasne.

Wg dokumnetacji DBF to co innego niz DBT.

Ostatnia aktualizacja: 15.12.2016 12:07:47 przez Phibrizzo
[#70] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #69

Racja coś mi się pomyliło z tym dbt. Przepraszam.
[#71] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #69

Polecam książkę Wojciecha Czyża "Rodzina M680x0". Opieram na niej swoją wiedzę o asemblerze procesorów Amigi. Świetna książka.

Ostatnia aktualizacja: 15.12.2016 14:02:36 przez Hexmage960
[#72] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #71

Ja bazuje na papierowej ksiazce:
"Enhanced 32-bit Microprocessor User's Manual by Motorola"

Dodatkowo kozystam z kilku stron www, glownie tej:
link

Dodatkowo podpieram sie ta:
link
Ale na tej sie "przejechalem" bo w jednym miejscu autor okrutnie sie pomylil, ponadto nie ma tam wyszstkiego.


Ostatnia aktualizacja: 15.12.2016 14:21:26 przez Phibrizzo
[#73] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #72

Jest jeszcze manual od NXP:
http://www.nxp.com/assets/documents/data/en/reference-manuals/M68000PRM.pdf
[#74] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #72

W którym miejscu, mógłbyś wskazać ? Kiedyś to tam czytałem ale nie pamiętam już. Co do UM z motoroli to tam są błędy jeśli chodzi o cykle a na pewno jeden. Co do książki Czyża to tam są błędy - bodajże przynajmniej jeden rozkaz ma błędną maskę bitową.
[#75] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #74

Co do książki Czyża to tam są błędy - bodajże przynajmniej jeden rozkaz ma błędną maskę bitową

Książka, którą posiadam ma załączoną erratę.
[#76] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #75

Spoko. Bardziej mi chodzi o to by nie podchodzić tak bezkrytycznie, bo błędy zwyczajnie się zdarzają.
[#77] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #65

Założyłem temat, jak ktoś chce, to może publikować swoje boje z kompilatorem tutaj.
[#78] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #74

Przy opisie skoku warunkowego BLS:

link

Zacytuje: "[...] if the C and Z flags are both set.
Powinno byc ze C lub Z jest ustwiony.
 

Ostatnia aktualizacja: 15.12.2016 21:34:17 przez Phibrizzo
[#79] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #71

Kiedyś dawny znajomy pokazał mi erratę napisaną przez niego do tej książki.
Mówił że ta książka Wojciecha Czyża "Rodzina M680x0" zawiera wiele błędów.
Proponuje na forum założyć wątek i publikować poprawki do tej książki.
Takżę do innych typu Vademecum Programisty 2tomy wyd. PalmaPress, Mapa pamięci A500 2 tomy, Amiga bez tajemnic Zrób własne demo, Asm-one amiga wyd. Helion, Kurs asemblera dla początkujących wyd. Helion.

Ostatnia aktualizacja: 16.12.2016 00:02:00 przez rgrg2
[#80] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #73

Motorola -> Freescale -> NXP -> Qualcomm ;D
[#81] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #59

Linux, BSD czy inne Unixy dla Amig działały na Amidze używając AmigaOS jedynie do załadowania jądra.

O ile dobrze pamiętam (a lata minęły) to Kickstart nie daje opcji na uruchomienie czegoś innego niż S:startup-sequence przy starcie komputera.
[#82] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #81

No co ty ?!
A gry ndosowe ?
W bootblocku tez można uruchomić program.
[#83] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #82

Można wystartować komputer bez startup-sequence (np. w celach diagnostycznych). Wtedy włącza się okienko AmigaDOS.
[#84] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #79

Ta errata to jedna mała karteczka. Po co wątek na forum o tym zakładać? Chochlik drukarski wkradnie się do każdej publikacji.

Ostatnia aktualizacja: 16.12.2016 20:08:31 przez Hexmage960
[#85] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #82

mozna, ale i tak wiekszosc loaderow raczej korzystala z trackdisk.device, zeby oszczedzic miejsce w tych 2kb i upakowac cos jeszcze oprocz loadera ( http://negative.nakoz.org tu jest moj stary program ultracracker do zrywania cracktro z bootblockow jakby ktos chcial sie pobawic ). inna sprawa, ze bez kickstarta system w ogole nie wykona tej sekwencji wczytywania bootblocka? czy sie myle, bo w sumie jakos ten kickstart sam byl wczytywany z dyskietki?:)
[#86] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #85

W A1000 był bootstrap, który wyczytywał kickstart z dyskietki, w reszcie Amig, jak wyjmiesz kickstart, to nie nie ma nic.
[#87] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #72

Ja korzystam z "M68000 Family Programmer's Reference Manual".
[#88] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #86

no to tak myslalem, ale nie chcialem medrkowac bez sprawdzenia
kick w amidze to tak pewna rzecz, ze ciezko bedzie znalezc jakakolwiek gre (a juz na pewno nie program), ktory nie korzysta z czegos w kickstarcie, nawet jak nie exec.library (co juz mega malo prawdopodobne) to jakis informacji, ktore mozna odczytac w pamieci dzieki ks'owi

Ostatnia aktualizacja: 17.12.2016 22:08:04 przez juen
[#89] Re: Jak zacząć kodowanie dem (i gier) na A500 - wykład Cahira

W odpowiedzi na #88

Uruchomienie czegokolwiek bez KS w Amidze (prócz A1000) nie jest możliwe, ponieważ Amiga nie ma biosu. KS pełni funkcje biosu i systemu operacyjnego. W dodatku po resecie w Amidze robi się mała magia, KS jest mapowany wtedy pod adres $0, aż do skasowania bitu OVL (zwykły dostęp do CIA go kasuje, nie pamiętam, czy A czy B). Cały proces mapowania odbywa się sprzętowo, nie znajdziesz go w kodzie kickstartu, właściwie to Amiga robi to tak jakby za plecami kickstartu. Jeśli otworzysz plik kickstartu to znajdziesz na samym początku adres skoku do execa, więc pierwszą rzeczą, która robi Amiga, to uruchomienie execa.

Istnieje możliwość uruchomienie czegoś innego niż kickstart. Amiga pozwala na uruchomienie alternatywnego kickstartu/oprogramowania jeśli ten znajduje się pod adresem $F00000 (w resourcowanych źródłach execa znajdziesz na początku procedurę to umożliwiającą), jednak na razie chyba tylko CDTV ma bootrom pod tym adresem, nie wiem jak z zaawansowanymi kartami turbo do A1200.
Na stronie SCENA.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