Dyskusja:Biblioteczka kodera Atari XL/XE
From Atariki
proponuje dodać temat "Techniki skracania kodu" obok "Techniki przyspieszania kodu" - procedury optymalizowane nie na szybkość tylko na zajmowane miejsce. Xxl 21:56, 27 gru 2007 (CET)
silwuple ;) Mikey 22:03, 27 gru 2007 (CET)
nie wiem czy to się nadaje
1) szybkie mnożenie przez -1.
Z=A*(-1) to EOR #$ff STA Z INC Z
2) ujemne indeksowanie przy wyszukiwaniu rosnącym - oszczędzamy porównanie w rej. indeksowym np. szukamy wartości A w łańcuchu TAB o długości L.
LDY #$ff-L CMP TAB-($ff-L),Y BEQ _JEST INY BNE _DO_CMP
Xxl 20:21, 6 maj 2008 (CEST)
- Hm, to pierwsze to zwykłe uzupełnienie, p. każdy podręcznik programowania na 6502. Ale z drugiej strony, nie kazdy takowy ma (acz mozna od WDC ściągnąć), więc może... To drugie do technik skracania chyba wejdzie, tylko trzeba dodać etykietę :> KMK 16:14, 2 cze 2008 (CEST)
- do skracania kodu może coś takiego: jeśli mamy często wywoływany podprogram, któremu trzeba przekazać parametry to robimy to zazwyczaj tak:
1. zapisujemy w wydzielonym obszarze na którym operuje podprogram adres danych i robimy JSR do procedury.
proponuje:
2. wykonujemy JSR do podprogramu, podprogram zdejmuje ze stosu adres który można indeksować od 1 - tam znajdują się nasze dane.
Powrót jest też prosty - wystawiamy na stos adres powrotu (do zdjętego poprzednio adresu dodajemy stałą wartość) i RTS.
oznacza to że trzeba tak sobie zorganizować program:
JSR podprogram dta nasze dane ... dalsza część programu ... JSR podprogram dta nasze dane itd.
czym częściej używany podprogram tym więcej oszczędzamy - nie potrzeba:
lda <adres danych sta w ciele podprogramu lda >adres danych sta cialo podprogramu lub strona zero
czyli ok 10 bajtów na wywołanie. Xxl 13:14, 3 cze 2008 (CEST)
- Tak działa funkcja PRINTF w SpartaDOS X (opisana tutaj, str. 45-49). W sumie, czemu nie, tylko trzeba dodać zastrzeżenie, że liczba danych przekazywanych w ten sposób albo musi być stała, albo ciąg danych musi być jakoś wyraźnie zaterminowany wartością specjalną. W sumie, najwygodniej się w ten sposób posługiwać stałymi (np. tekstem do wypisania, jak we wspomnianym PRINTF-ie). KMK 14:28, 3 cze 2008 (CEST)
Nielegalne rozkazy
Proponuje również dodawać ciekawe procedury, które zawierają niepublikowane rozkazy. Xxl 17:58, 18 sty 2011 (CET)
- Domyślam się, że chodzi o niepublikowane rozkazy 6502? Ja jestem przeciw (jak łatwo się domyślić). KMK 00:58, 19 sty 2011 (CET)
- Uwazam jednak, ze temat jest wazny i przynajmniej lista rozkazow z podzialem na stabilne (dzialajace na wszystkich atari) i niestabilne (dziajalace na niektorych egzemplarzach) powinna byc opisana. Sama swiadomosc istnienia niepublikowanych rozkazow to za malo, trzeba opisac stan faktyczny a nie zastanawiac sie nad tym czy ten temat dotyczacy atari powinien byc opisany czy przemilczany. Xxl 10:33, 19 sty 2011 (CET)
- Częściowo wziąłbym stronę xxla - warto mieć nielegale zdokumentowane. Co do przykładów kodu - rzecz dyskusyjna (jestem zdecydowanie przeciwnikiem uzywania nielegali w swoim kodzie). Mono 12:57, 19 sty 2011 (CET)
- Rozumiem fascynację tematem, sam ją przeżywałem jakieś 20 lat temu. Ale: 1) nie widzę potrzeby dokumentowania w Atariki nielegalnych rozkazów 6502, skoro nie mamy opisu legalnych (a tego nie mamy, bo szkoda powtarzać to, co jest dostępne wszędzie w sieci, również u producenta); 2) opis nielegalnych rozkazów każdy, kto chce, może łatwo wygóglać (np. tu jest jeden, w "Bajtku" był też artykuł, mój zresztą); 3) nie nam się zastanawiać nad tym, co warto opisywać - racja, nie nam, bo zastanowił się już nad tym producent 6502 i nielegali nie opisał, najwyraźniej zamierzając je w przyszłości usunąć, co też uczynił; 4) moje prywatne zdanie: moim prywatnym zdaniem mamy dużo szczęścia, skoro udało się uniknąć sytuacji, w której nielegalne rozkazy nie są używane przez co drugi program, dzięki czemu podmianka 6502 na 65816 i zabawa tym procesorem jest prawie zupełnie bezbolesna; ewentualna "moda" na nielegale, jeśliby miała powstać, poważnie ograniczy tę możliwość, a chyba lepiej jest mieć możliwości więcej niż mniej. 5) w końcu: nie ma listy nielegalnych rozkazów "działających na wszystkich Atari", bo np. na XEGS Pinokia, XEGS krapa, XEGS laoo, na moim 65XE i na kompie Pasia, na 1200XL z XL7 i bógjedenraczywiedzieć ilu jeszcze komputerach z zamontowanym Sweet 16 żaden nielegal nie zadziała z powodów, jakich się łatwo domyślić. Chyba, że zamierzamy się bawić w dyskusję, czy Atari z jednym scalakiem wymienionym na nowszą wersję to jest jeszcze Atari, od ilu włosów zaczyna się łysina, albo uprawiać sofistykę w rodzaju, że do Atari 8-bit nie można wsadzić procesora 16-bit, bo przestanie być to komputer 8-bit (co wątpliwe, szyna danych pozostaje ośmiobitowa, podobnie o ST nikt nie twierdzi, że jest to komputer 32-bit). KMK 21:16, 19 sty 2011 (CET)
temat ktory powinien byc rzetelnie opisany - bo dotycza atari (o to w Atariki chyba chodzi nie?). osobiste preferencje nie powinny byc tu brane pod uwage.
ad 1. niestety nie ma dostepnej w sieci dokumentacji ktore nielegalne rozkazy sa przez atari wykonywane a ktore nie, a ktore tylko przez niektore modele. producent nie publikowal takich mozliwosci swojego czipa podobnie zreszta nie ma opublikowanych / udokumentowanych przez producenta mozliwosci generowania przez antica interlancu sprzetowego - co swoja droga tez by sie w atariki przydalo.
ad 2. kazdy kto chce moze rowniez wyguglac jakie byly modele atari co nie przeszkadza zgromadzic tej wiedzy w atariki. zreszta nie ma w sieci opisu stablnych i nie (w odniesieniu do atari) nielegalnych rozkazow.
ad 3. juz pisalem, ze producent wielu reczy nie opisuje, z czasem jednak okazuje sie ze pewne uklady wykazuja 'ukryte' mozliwosci. a producent nie usunal tych mozliwosci w modelach procesorow montowanych w atari. idac Twoim tokiem myslenia nalezalo by w atariki umiescic tylko dokumentacje producenta albo o zgrozo tylko linki gdzie ja znalezc...
ad 4. atariki to nie prywatne zdanie. ze zacytuje: "Atari Wiki, baza wiedzy i encyklopedia o Atari i sprawach pokrewnych, dostępna na zasadzie wolnej dokumentacji dla każdego. Każdy też może wnieść wkład w jej rozwój.". nie mozna omijac niektorych tematow dotyczacych atari w atariki bo sa dla kogos niewygodne. zreszta nie wpadalbym w megalomanie, nie sadze zeby artykul w atariki wywolal ewentualna 'mode' na nielegalne rozkazy albo zdusil ewentualna 'mode' na cos innego. jeszcze raz mowie - rzetelnie opisac rzeczywstosc.
ad 5. jest taka lista dzialajaca na wszystkich standardowych atari. komputery ktore wymieniles nie sa standardowymi komputerami atari. to sa komputery z wymienionym procesorem na 16 bitowa wersje (czy po pojawieniu sie VBXE, w atariki nie wolno zamieszczac artykolow np. o bledach GTIA bo potezniejsza wersja -VBXE- ich nie ma?). jasne jest wiec ze nielegalne rozkazy na takich maszynach nie beda dzialac (o konsekwencjach uzywania rozkazow nielegalnych tez powinno sie napisac)... co do wymiany cpu, bedzie to kolejny komputer o architekturze 8bitowej z 16 bitowym cpu, historia zna duzo 16bit cpu z 8bitowa szyna danych - i co to ma wspolnego z naszym tematem. Xxl 23:21, 19 sty 2011 (CET)
- Odpowiem tylko na to: "fascynacja tematem atari by sie jednak tu przydala ale jesli juz ja przezyles (...)". Otóż wrócimy do dyskusji, kiedy oduczysz się trollowania. Dziękuję, pozdrawiam i życzę owocnego stosowania takich chwytów w innych dziedzinach życia. KMK 00:04, 20 sty 2011 (CET)
zdanie wykasowalem, czy teraz mozna liczyc na merytoryczna odpowiedz? Xxl 08:47, 20 sty 2011 (CET)
- Ok, jutro, dobrze? KMK 01:04, 22 sty 2011 (CET)
Też fascynowałem się tematem 20 lat temu i ciągle uważam go za ciekawy. Widziałem dziesiątki artykułów na ten temat i nie znam ani jednego, który byłby dokładny i bez błędów. W zalinkowanym artykule Offengi jest np. "Exact operation unknown". Argumentacja, że to są błędy, że producent nie opisał, do mnie nie trafia. Równie dobrze należałoby zakazać trybów HIP, TIP, 9++, 480i. Zgadzam się z Xxlem, że jeden artykuł w Atariki nie spowoduje wysypu programów. A jeśli nawet - to przecież 8-bitowe Atari to raczej 6502 z nielegalnymi instrukcjami, niż 65816 z VBXE. Oczywiście najlepiej, gdyby program wykrywał procesor i dostosowywał się do niego, albo w ogóle nie musiał. Najlepiej też, żeby emulatory poprawnie wykonywały wszystkie rozkazy. Żaden emulator obecnie tego nie robi, łącznie z najnowszą Altirrą. --0xF 08:10, 24 sty 2011 (CET)
- No nie przekonaliście mnie. Podtrzymuję, że póki nie mamy opisu rozkazów legalnych, nie ma najmniejszego sensu opisywać (chociaż ciśnie mi się pod palce wyraz "promować") nielegalnych. Argument, że "producent wielu rzeczy nie opisuje" z powołaniem się na to, że wiele układów ma "ukryte możliwości" (np. 480i), jest żaden, bo w tym wypadku możliwości te były ukryte również dla producenta. W przypadku 6502 producent świetnie wiedział, że tabela legalnych opkodów nie pokrywa wszystkich możliwych kombinacji bitów - czyli świadomie zarezerwował pozostałe na przyszłość, po to, żeby procesor można było w przyszłości ulepszyć. Co też zrobiono: mamy 65C02 i 65C816. Analogicznie jest też gdzie indziej, o ile mi wiadomo, np. 80286 wykonuje tylko legalne rozkazy 8086, ktoś mógłby zatem powiedzieć, że PC AT "to już nie jest PC, bo PC to 8086 z nielegalami". Jak wiadomo, nie należę do tej partii. KMK 14:19, 2 lut 2011 (CET)
- P.S. Przepraszam za opóźnienie w odpowiedzi. KMK 14:21, 2 lut 2011 (CET)
ok. na hobby nie zawsze staje czasu. choc w odpowiedzi liczylem znalezc argumenty a nie wrazenia... temat dotyczy atari? oczywiscie. dotyczy wszystkich standardowych atari. "Atari Wiki, baza wiedzy i encyklopedia o Atari i sprawach pokrewnych, dostępna na zasadzie wolnej dokumentacji dla każdego. Każdy też może wnieść wkład w jej rozwój." pytanie powinno brzmiec w jakim dziale ta wiedze umiescic a nie czy ja umiescic. zwlaszcza, ze z 4 osob ktore sie wypowiedzialy tylko Ty nie widzisz potrzeby jej zamieszczenia. logika Twojej odpowiedzi nie pozwolila by rowniez opisywac w atariki chociazby: ukryte mozliwosci zwane bugami gtia ostatnich modeli o ktorych producent tez wiedzial (i co gorsze, te dotycza tylko niektorych atarynek) a jest umieszczone; inne bugi 6502 o ktorych producent tez wiedzial i tez zostaly wyeliminowane w nowszych wersjach (nie instalowanych w atari procesorach) np. dzialanie znacznika N, tez jest umieszczone chociaz tu nie wszystkie bugi sa zamieszczone.Xxl 17:41, 2 lut 2011 (CET)
- Ja też jestem zdania, że powinny być opisane. Choć pewnie i tak nie użyję. A patrząc na argumentację KMK (posiadacz 65816) - równie dobrze nie opisujmy trybu Antic 3. Wszak w standardowym edytorze (Atari Basic) nie ma trybu, który go używa. Zgodnie z tą logiką - tryb 3 Antica jest nielegalny. Także - proszę opisywać. A argument, że jeszcze nie wszystkie legalne są opisane - do mnie nie trafia. Zgodnie z argumentacją KMK kiedyś do mnie - zostawić/stworzyć linki, kiedyś ktoś opisze. Wioęc w czym problem? Czekam na opis nielegali.--Sikor 18:58, 4 lut 2011 (CET)
- Według mnie po co opisywać nielegalne rozkazy, skoro nie ma opisu legalnych? Może ktoś się podejmie opisu legalnych, to wtedy można pomyśleć o nielegalnych. Innuendo 21:22, 4 lut 2011 (CET)
- Innuendo, idąc Twoim tokiem mślenia: skoro nie są opisane wszystkie komendy Atari Basica (wbudowany), po co opisywać komendy assemblera? Nieprawdaż. Nielegale powinny być opisane. Legale zresztą też, a co. A w jakiej kolejności (które najpierw) - nieważne. Tym bardziej, żze przy opisie nielegali można pokazać kod, jak daną rzecz wykonać "legalnie" - będzie przyjemnie i pożytecznie.--Sikor 18:06, 5 lut 2011 (CET)
- Według mnie po co opisywać nielegalne rozkazy, skoro nie ma opisu legalnych? Może ktoś się podejmie opisu legalnych, to wtedy można pomyśleć o nielegalnych. Innuendo 21:22, 4 lut 2011 (CET)
- Sikor, proponuję nie używać argumentacji typu "KMK mói to co mówi bo ma 65816", bo można się naciąć - mam zwykłą 130-tkę. Generalnie ciekawi mnie to ciśnienie na temat nielegalnych rozkazów, skoro nie mamy opisanych legalnych: mianowicie jaki jest cel opisywania tego pierwszego bez tego drugiego? Przecież nie jest tak, że asembler (ten "legalny") jest powszechnie znany. Po drugie, nie jest tak, żeby 6502 był specyficznie atarowskim scalakiem - dlatego może by zostawić ten temat (i legalnych rozkazów też) stronie 6502.org? KMK 18:32, 20 lut 2011 (CET)
Długość umieszczonych programów
Proponuję dodać w zakładce 'Dźwięk' również programik do generowania mowy na układzie GTIA. Program ma około 100 linii kodu plus po 3 do 5 linii na definicje głoski - nie wiem czy to nie za dużo jak na kategorię niezbędnik kodera? Xxl 08:41, 11 lut 2011 (CET)
- Trochę za dużo, ale myślę, że jeszcze zmieścimy, pod warunkiem, że będzie to miało walor poglądowy, tzn. będzie do tego jakiś sensowny (co niekoniecznie znaczy "długi") opis. Same gołe sto wersów kodu to raczej ciężko. KMK 18:35, 20 lut 2011 (CET)