Dyskusja:Biblioteczka kodera Atari XL/XE

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 20:16, 19 sty 2011
KMK (Dyskusja | wkład)
(Nielegalne rozkazy)
← Previous diff
Wersja z dnia 22:21, 19 sty 2011
Xxl (Dyskusja | wkład)

Next diff →
Linia 62: Linia 62:
::::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. [http://members.chello.nl/taf.offenga/illopc31.txt 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). [[Użytkownik:KMK|KMK]] 21:16, 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. [http://members.chello.nl/taf.offenga/illopc31.txt 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). [[Użytkownik:KMK|KMK]] 21:16, 19 sty 2011 (CET)
 +
 +fascynacja tematem atari by sie jednak tu przydala ale jesli juz ja przezyles to przynajmniej nie hamuj tematow ktore powinny byc rzetelnie opisane - 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. [[Użytkownik:Xxl|Xxl]] 23:21, 19 sty 2011 (CET)

Wersja z dnia 22:21, 19 sty 2011

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)

fascynacja tematem atari by sie jednak tu przydala ale jesli juz ja przezyles to przynajmniej nie hamuj tematow ktore powinny byc rzetelnie opisane - 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)

Personal tools