Dyskusja:Biblioteczka kodera Atari XL/XE

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 11:57, 19 sty 2011
Mono (Dyskusja | wkład)

← Previous diff
Wersja z dnia 20:16, 19 sty 2011
KMK (Dyskusja | wkład)
(Nielegalne rozkazy)
Next diff →
Linia 60: Linia 60:
:::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). [[Użytkownik:Mono|Mono]] 12:57, 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). [[Użytkownik:Mono|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. [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)

Wersja z dnia 20:16, 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)
Personal tools